Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > vb.net ต้องการแสดงผลใน Datagrid ให้มี ลำดับแถว ทำไงครับ



 

vb.net ต้องการแสดงผลใน Datagrid ให้มี ลำดับแถว ทำไงครับ

 



Topic : 051252

Guest




ผม Seclect ค่าออกใน Datagrid มาได้10rows แต่อยากให้column แรก ลำดับแถง จะเขียนไงครับ



Tag : .NET, VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-11-06 08:59:27 By : chin View : 14028 Reply : 21
 

 

No. 1



โพสกระทู้ ( 297 )
บทความ ( 0 )



สถานะออฟไลน์


for สิครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-06 13:42:32 By : nooknoname
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : nooknoname เมื่อวันที่ 2010-11-06 13:42:32
รายละเอียดของการตอบ ::
... ครับถูกต้องใช้ for จะให้แสดงในdatagrid .ใน columnแรก ยังไง.......

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-06 15:13:36 By : chin
 

 

No. 3

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : nooknoname เมื่อวันที่ 2010-11-06 13:42:32
รายละเอียดของการตอบ ::


Code (VB.NET)
Dim sqlHuman As String
        'Dim da As SqlDataAdapter
        Dim ds As New DataSet
        sqlHuman = "SELECT Production.ProductionID,GenerateFG_Details.SectionControl FROM GenerateFG_Details Inner Join Production ON (GenerateFG_Details.GenerateID = Production.GenerateID) Where  (Production.ProductionID=@ProductionID) GROUP BY GenerateFG_Details.SectionControl,Production.ProductionID"

        With com
            .CommandText = sqlHuman
            .CommandType = CommandType.Text
            .Connection = Conn
            .Parameters.Clear()
            .Parameters.Add("@ProductionID", SqlDbType.NVarChar).Value = cboGenFG.SelectedValue.ToString()
            dr = .ExecuteReader()
        End With

        If dr.HasRows Then
            Dim dtSectionControl As DataTable
            dtSectionControl = New DataTable()
            dtSectionControl.Load(dr)
            dgvSectionList.DataSource = dtSectionControl
            FormatdgvStockList()

        End If



 With dgvSectionList
            If .RowCount > 0 Then
                Dim i As Integer = 0
                For i = 0 To dgvSectionList.Rows.Count - 1



                    .Columns(0).HeaderText = "ลำดับ"
                    dgvSectionList.Rows(i).Cells(0).Value = i + 1
                    '.Columns(1).HeaderText = "เลขที่ผลิต"
                    .Columns(1).HeaderText = "หน่วย"
                 .Columns(0).Width = 40
                    .Columns(1).Width = 5
            '.Columns(3).Width = 40
                Next
            End If
        End With


ทำไม่ได้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-10 16:46:04 By : chin
 


 

No. 4



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์


ของผมใช้

Code (VB.NET)
Dim Table1 As Data.DataTable
Table1 = New DataTable("TEST")
Dim ds As New DataSet()
Dim Row As DataRow
Dim SEQ As Integer
Dim Col0 As DataColumn = New DataColumn("SEQ")
Col0.DataType = System.Type.GetType("System.String")

FOR LOOP

Row = Table1.NewRow()
SEQ += 1
Row.Item(0) = SEQ
Table1.Rows.Add(Row)

END FOR

ds = New DataSet()
ds.Tables.Add(Table1)
GridView1.DataSource = ds.Tables("TEST")
GridView1.DataBind()


ลองดูครับ ไม่รู้จะช่วยได้รึป่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 10:58:54 By : รามาตูม
 


 

No. 5

Guest


ผมมีวิธี ให้แสดงลำดับของ Row ที่ RowHeader เมื่อบรรทัดใดบรรทัดหนึ่งถูกลบไป ลำดับก็จะยังคงเรียงต่อเนื่อง ไม่ขาดหายไป
แต่ตอนหนี้ผมกำลังล้างเครื่องอยู่ ไม่สามารถเปิด VB.net ได้ สักประมาณ 5 โมงน่าจะเสร็จ แล้วจะมาโพสวิธีให้ เขียนเองสด ๆ กลัวผิด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 13:23:06 By : BASE3000
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : BASE3000 เมื่อวันที่ 2010-11-11 13:23:06
รายละเอียดของการตอบ ::
...ขอบคุณครับจะรอ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 15:03:26 By : chin
 


 

No. 7

Guest


รอแป๊ปนะครับ มีปัญหาต้องลงรอบ 2 แต่มาแน่นอน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 20:23:41 By : BASE3000
 


 

No. 8

Guest


มาแล้วครับ ถึงจะช้าไปนิด

Private Sub dg_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles dg1.RowPostPaint

'สร้างเลขบรรทัด
Using b As SolidBrush = New SolidBrush(dg1.RowHeadersDefaultCellStyle.ForeColor)
e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), _
sender.DefaultCellStyle.Font, _
b, _
e.RowBounds.Location.X + 40, _
e.RowBounds.Location.Y + 3, _
A_Right)
End Using
End Sub

ไม่ได้แยกสีมา ไม่รู้เข้าใจหรือเปล่า ประมาณว่า ให้เรียก Event -- RowPostPaint
จากนั้นให้ Copy คำสั่งชุดที่ต่อจาก สร้างเลขบรรทัด เข้าไป DataGridView ตารางนั้น ๆ ก็จะมีเลขบรรทัดกำกับทุกบรรทัด

ส่วนถ้าต้องการใส่เลขบรรทัดไว้ใน Column ของตาราง ก็ให้ทำที่ Event นี้เหมือนกัน ขั้นตอนคร่าว ๆ คือ
สร้าง Column ใหม่ให้ตาราง หลังจาก Bind ข้อมูลแล้ว
Me.dg1.Columns.Add("ชื่อ", "หัว") -----> DeFault เป็น TextBoxColumn อยู่แล้ว

หลังจากนั้นให้นำคำสั่งชุดนี้ไปใส่ที่ Event RowPostPaint
Me.dg(e.RowIndex, "ชื่อ" หรือ ลำดับแถว).value = e.RowIndex

เท่านี้ก็เรียบร้อยแล้วครับ ถ้าไม่เข้าใจ โพสไว้ พรุ่งนี้จะเข้ามาดู
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 22:24:22 By : BASE3000
 


 

No. 9

Guest


ของส่งให้ใหม่ครับ เพิ่งรู้ว่าสามารถทำสีเหมือน VS TextEditor ได้

Code (VB.NET)
Private Sub dg_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles dg1.RowPostPaint

'สร้างเลขบรรทัด
Using b As SolidBrush = New SolidBrush(dg1.RowHeadersDefaultCellStyle.ForeColor)
e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), _
sender.DefaultCellStyle.Font, _
b, _
e.RowBounds.Location.X + 40, _
e.RowBounds.Location.Y + 3, _
A_Right)
End Using
End Sub



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-11 23:02:10 By : BASE3000
 


 

No. 10

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : BASE3000 เมื่อวันที่ 2010-11-11 23:02:10
รายละเอียดของการตอบ ::
error ครับ
Code (VB.NET)
Private Sub dg_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles dg1.RowPostPaint

'สร้างเลขบรรทัด
Using b As SolidBrush = New SolidBrush(dg1.RowHeadersDefaultCellStyle.ForeColor)
e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), _
sender.DefaultCellStyle.Font, _ 'error ตรงDefaultCellStyle
b, _
e.RowBounds.Location.X + 40, _
e.RowBounds.Location.Y + 3, _
A_Right)     'error ตรงA_Right
End Using
End Sub

Code (VB.NET)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 10:57:48 By : chin
 


 

No. 11



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


Code (VB.NET)
Dim cmdBuilder As System.Text.StringBuilder = New cmdBuilder As System.Text.StringBuilder()

cmdBuilder.AppendLine("SELECT ROW_NUMBER() ")
cmdBuilder.AppendLine("      OVER (ORDER BY GenerateFG_Details.SectionControl,Production.ProductionID) AS RowNo")
cmdBuilder.AppendLine("   ,Production.ProductionID,GenerateFG_Details.SectionControl")
cmdBuilder.AppendLine("FROM GenerateFG_Details")
cmdBuilder.AppendLine("    Inner Join Production")
cmdBuilder.AppendLine("       ON (GenerateFG_Details.GenerateID = Production.GenerateID)")
cmdBuilder.AppendLine("Where (Production.ProductionID=@ProductionID)")
cmdBuilder.AppendLine("GROUP BY GenerateFG_Details.SectionControl,Production.ProductionID")

With com
   .CommandText = cmdBuilder.ToString()
   .CommandType = CommandType.Text
   .Connection = Conn
   .Parameters.Clear()
   .Parameters.Add("@ProductionID", SqlDbType.NVarChar).Value = cboGenFG.SelectedValue.ToString()
   dr = .ExecuteReader()
End With


จะมี Column ชื่อ RowNo ที่เป็นหมายเลขแถวตามที่ต้องการและถ้าคุณลบข้อมูลออก ก็ให้ refresh datasource ใหม่
หมายเลขจะยังคงรันอัตโนมัติเสมอและใช้ได้ทั้ง winapp - webapp ในกรณีของ ms sql server 2005 ขึ้นมาค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 12:07:12 By : blurEyes
 


 

No. 12



โพสกระทู้ ( 191 )
บทความ ( 0 )



สถานะออฟไลน์


โอ้วันนี้ เจ๊ Stupid gurl มาตอบให้แบบเต๊มๆๆ ไม่แซว ด้วย อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 13:11:06 By : noizeless
 


 

No. 13



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ไม่ค่อยจะเต็มเท่าไหร่หรอกค่ะ ไม่ค่อยจะว่าง สงสัยอะไรหรอคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 13:55:10 By : blurEyes
 


 

No. 14

Guest


ตอบความคิดเห็นที่ : 11 เขียนโดย : blurEyes เมื่อวันที่ 2010-11-12 12:07:12
รายละเอียดของการตอบ ::
... ขอบคุณครับ ทำตามที่บอกได้แล้วครับ.......

ส่วนผมทำแบบนี้ก็ได้เหมือนกัน ไม่รู้จะเป็นไรไหม
With dgvGenerateFG_DetailsList
Dim i As Integer
Dim Column1 As New DataGridViewTextBoxColumn
Me.dgvGenerateFG_DetailsList.Columns.Insert(0, Column1)
For i = 1 To dgvGenerateFG_DetailsList.RowCount - 1
dgvGenerateFG_DetailsList.Rows(i - 1).Cells(0).Value = i
Next
If .RowCount > 0 Then
.Columns(0).HeaderText = "ลำดับ"
end if
end with


ขอถามอีกอย่างว่า ถ้าจะแก้ไขบันทัด ที่เราเลือก ผ่านไปทาง textbox พอกดปุ่มแก้ไข ให้cerser เด่งมาที่บันทัดที่เราเลือกตอนแรก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 16:21:13 By : chin
 


 

No. 15



โพสกระทู้ ( 162 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ต้องวนหรอก ให้มันสร้างตอน RowCreated นี่แหละ เขียนครั้งเดียวแล้วก็เรียกใช้ได้ทุก Grid

Code (C#)
public int iRow = 0;
  
   protected void Gridview_RowCreated(object sender, GridViewRowEventArgs e)
    {
        iRow = e.Row.DataItemIndex + 1;
    }


ใช้ item template เรียก <%# iRow %>

<asp:TemplateField HeaderText="No" HeaderStyle-HorizontalAlign="center"
ItemStyle-HorizontalAlign="right" HeaderStyle-Width="25px" >
<ItemTemplate>
<%# iRow %>
</ItemTemplate>
</asp:TemplateField>

ใน Gridview Set ให้
OnRowCreated="Gridview_RowCreated"
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-12 16:57:55 By : superpheak
 


 

No. 16

Guest


ตอบความคิดเห็นที่ : 10 เขียนโดย : chin เมื่อวันที่ 2010-11-12 10:57:48
รายละเอียดของการตอบ ::
ขอโทษครับ ไม่ทันดูตัวแปร A_Right คือ Format การพิมพ์ชิดขวา DrawString เพื่อให้ตำแหน่งสุดท้ายตรงกัน
ส่วน sender.DefaultCellStyle.Font = Font ของตาราง dg1 สามารถใช้ฟอนต์สร้างใหม่ หรือฟอนต์ของฟอร์มก็ได้
ผมของแก้ไขให้เป็นดังนี้

Code (VB.NET)
Private Sub dg_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) _
    Handles dg1.RowPostPaint, dg2.RowPostPaint
        'สร้างเลขบรรทัด
        Using b As SolidBrush = New SolidBrush(dg1.RowHeadersDefaultCellStyle.ForeColor)
            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), _
                                  sender.DefaultCellStyle.Font, _
                                  b, _
                                  e.RowBounds.Location.X + 40, _
                                  e.RowBounds.Location.Y + 3, _
                                  New StringFormat(StringFormatFlags.DirectionRightToLeft))
        End Using
    End Sub



ถ้าติดขัดตรงไหนโพสมาครับ จะดูให้ใหม่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-14 13:44:26 By : BASE3000
 


 

No. 17

Guest


ตัวอย่าง

ต่อไปนี้เป็น CODE
สร้าง WinForm แล้วสร้างตารางชื่อ dg1 ก่อน
หลังจากนั้น Copy โค๊ดชุดนี้ไปแทนที่ทั้งหมดใน Code Editor เพื่อทำการทดลอง

Code (VB.NET)
'สร้าง DataGridView ใช้ชื่อว่า "dg1"

Public Class F14ShowRowIndex
    Private dt As New DataTable

    Private Sub Form32_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dt.Columns.Add("ItmeName", GetType(System.String))
        For i As Integer = 0 To 10
            Dim dr As DataRow = dt.NewRow
            dr(0) = "บรรทัดที่ " & i
            dt.Rows.Add(dr)
        Next
        Dim ColA As New DataGridViewTextBoxColumn
        With ColA
            .ReadOnly = True
            .Name = "Index"
        End With

        Dim ColB As New DataGridViewTextBoxColumn
        With ColB
            .DataPropertyName = "ItmeName"
            .Name = "ItmeName"
            .AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        End With

        With dg1
            .AutoGenerateColumns = False
            .Columns.AddRange(New DataGridViewColumn() {ColA, ColB})
            .DataSource = dt
        End With

    End Sub

    Private Sub dg_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) _
   Handles dg1.RowPostPaint
        'สร้างเลขบรรทัด
        Using b As SolidBrush = New SolidBrush(dg1.RowHeadersDefaultCellStyle.ForeColor)
            e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), _
                  sender.DefaultCellStyle.Font, _
                  b, _
                  e.RowBounds.Location.X + 40, _
                  e.RowBounds.Location.Y + 3, _
                  New StringFormat(StringFormatFlags.DirectionRightToLeft))
        End Using
        Me.dg1("Index", e.RowIndex).Value = e.RowIndex
    End Sub

End Class


สุดท้ายนี้ อยากถามว่า คำตอบที่โพสแล้ว สามารถกลับไปแก้ได้หรือไม่ ใครรู้ช่วยตอบที บางทีอยากแก้ไขนิดหน่อยแต่ทำไม่ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-15 08:42:19 By : BASE3000
 


 

No. 18



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


คุณไม่ได้สมัครสมาชิกครับ ไม่สามารถแก้ไขข้อความที่โพสไปแล้วได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-15 10:43:30 By : Amanza
 


 

No. 19

Guest


ใช้อันนี้ได้เลย

Code
<asp:GridView ID="GridView1" runat="server" EnableTheming="false" AutoGenerateColumns="false" GridLines="None" Width="100%" CssClass="textTD">

<Columns>
<asp:TemplateField HeaderText="Sr No" HeaderStyle-Width="5%" HeaderStyle-HorizontalAlign="Center">
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-24 15:40:06 By : bee
 


 

No. 20

Guest


ขอบคุณ "BASE3000" มากเลยนะคะ

กำลังทำโปรเจ็คพอดี และกำลังหาวิธีนับจำนวนแถวของ Datagridview พอมาเจอกระทู้นี้
แล้วลองทำตามคำแนะนำของ BASE3000 ได้แล้วค่ะ

ขอบคุณมากๆ เลยค่ะ T^T



ผลลัพธ์ที่ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-14 12:44:02 By : Tang-Mae
 


 

No. 21

Guest


ขอโทษทีคะ ไม่รู้ว่ารูปที่อัพโหลดจะใหญ่ขนาดนี้ >/\<
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-14 12:45:07 By : Tang-Mae
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : vb.net ต้องการแสดงผลใน Datagrid ให้มี ลำดับแถว ทำไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่