كيف أجعل في الـ GridView عمود يظهر رقم الصفوف بالتسلسل دون أن يكون هذا العمود له ارتباط بقاعدة البيانات. وشكرا
الترقيم التلقائي في GridView
السلام عليكم
يمكنك ذلك اخي الكريم
وذلك باضافه عامود الى الداتا غريد فيو نفسها
اكتب الكود التالي في البيج لود
'اضافه سطر فقط للترقيم
Dim column0 As New System.Windows.Forms.DataGridViewButtonColumn
column0.Name = "Column0"
column0.HeaderText = "ت"
column0.DisplayIndex = 0
column0.Width = 65
column0.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader
column0.ReadOnly = True
column0.FlatStyle = FlatStyle.Flat
column0.DefaultCellStyle.BackColor = Color.FromKnownColor(KnownColor.Control)
Me.DataGridView1.Columns.Add(column0)
Dim i1 As Integer
For i1 = 0 To DataGridView1.RowCount - 1
DataGridView1.Item("Column0", i1).Value = i1 + 1
Nextكما تلاحط اخي الكريم قمنا باضافه عامود جديد اسميته (ت) وقمت باعطائه بعض الصفات ليتلائم مع الداتا غريد
يبقي فقط ان اقوم باضافه كود يجعل الداتا غريد مرقمه في حاله انك اضفه سطر جديد
ولذلك نكتب الكود التالي في الحدث الخاص باضافه سطر
Private Sub DataGridView1_UserAddedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserAddedRow
Try
Dim i As Integer
For i = 0 To DataGridView1.RowCount - 1
DataGridView1.Item("Column0", i).Value = i + 1
Next
Catch ex As Exception
End Try
End Subومثله في حاله انك حذفه سطر
Private Sub DataGridView1_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow
Try
Dim i As Integer
For i = 0 To DataGridView1.RowCount - 1
DataGridView1.Item("Column0", i).Value = i + 1
Next
Catch ex As Exception
End Try
End Subارجو ان يكون هذا هو المطلوب

وعليكم السلام
هذا ما أريده بالضبط ولكن السطر الأول ما تعرفه معي وهو:
Dim column0 As New System.Windows.Forms.DataGridViewButtonColumn
كيف أجعل الفورم يتعرف عليه؟
عفوا اخي الكريم
انا اتكلم عن الويندز ابلكيشن (يعني فورم )
اما بالنسبه للويب ابلكاشن فلاعلم
احتمال انو في اختلاف بيم الويب والفورم
لانو انا شغال معي صح على الفورم

أول شيء سنقوم باضافة عمود Template إلى الجدول المختار
هذا العمود هو عبارة عن Template نضع فيه كنترول Label
وفي حدث OnBound لل GridView نضع الكود التالي:
for(int i=0;i<GridView1.Rows.Count;i++)
{
int x=i+1;
((Label)GridView1.Rows.Cells[0].Controls[1]).Text=x.ToString();
}ملاحظة : العمود يجب أن يكون هو العمود الأول
اذا لك يكن نستبدل Cells[0].Controls... بالعبارة Cells[رقم العمود - 1].Controls[1]
أتمنى أن تكون الفكرة قد وصلت ان شاء الله
إضافة لما تفضل به Arwany وصاحب السمو احب ان اضيف هذه الطريقة
اضف TemplateField ,وضع فيه Label وفي خصائص Binding ضع
(Container.DisplayIndex+1)+(GridView1.PageIndex)*(GridView1.PageSize)
ليصبح هكذا
<asp:TemplateField HeaderText="ItemNo"> <ItemTemplate> <asp:Label ID="lbno" runat="server" Style="position: relative" Text="<%# (Container.DisplayIndex+1)+(GridView1.PageIndex)*(GridView1.PageSize) %>" Width="20px"></asp:Label> </ItemTemplate> </asp:TemplateField>
تم تعديل هذه المشاركة بواسطة newbie في 3 يوليو 2007 في 16:49
The World Must Be Crazy
راااااااااااااااائع ورووووووووووووعة ومروووووووووع اشكركم بقووووووووووة وبخشوووووووووونة ... دمتم لنا ذخر
عندي لك حل أحلى
وهو باستخدام RowDataBound
الطريقة جدا سهلة وبسيطة ،، كل ما عليك انك تنشا TemplateColumn وتضيف في خانة ItemTemplate أداة Label لنفترض أن اسمها lblNo
الآن في الحدث GridView1_RowDataBound أضف الكود التالي :
If e.Row.RowType = DataControlRowType.DataRow Then
Dim PCount As Int16 = GridView1.PageCount - 1
Dim PIndex As Int16 = GridView1.PageIndex
CType(e.Row.FindControl("lblNo"), Label).Text = (PCount * PIndex) + e.Row.RowIndex + 1
End Ifالكود بيتأكد في البداية انه هذا الصف يحتوي على بيانات ( يعني ما حيكون Header أو غيره )
بعدين بيأخذ عدد الصفحات ( تحتاجه جدا في حالة عندك خاصية Paging مفعلة ) ولا تنسى تطرح منهم 1
وكمان بياخذ عدد الصفوف في الصفحة الواحدة
وبعملية حسابية بسيطة يضيف لأداة lblNo الارقام
هذا والله أعلم
تم تعديل هذه المشاركة بواسطة Scoool في 4 يوليو 2007 في 09:19
>> تجارب برمجية <<
[/وسط][/وسط][/وسط]
هذا الموضوع مغلق.