الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الترقيم التلقائي في GridView

مغلق
بدأه فهـ1ـود في 3 يوليو 2007 · 7 رد · 1,194 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف أجعل في الـ GridView عمود يظهر رقم الصفوف بالتسلسل دون أن يكون هذا العمود له ارتباط بقاعدة البيانات. وشكرا

#2

السلام عليكم

يمكنك ذلك اخي الكريم

وذلك باضافه عامود الى الداتا غريد فيو نفسها

اكتب الكود التالي في البيج لود

'اضافه سطر فقط للترقيم
			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

ارجو ان يكون هذا هو المطلوب

1145392391.gif
#3

وعليكم السلام

هذا ما أريده بالضبط ولكن السطر الأول ما تعرفه معي وهو:

  Dim column0 As New System.Windows.Forms.DataGridViewButtonColumn

كيف أجعل الفورم يتعرف عليه؟

#4

عفوا اخي الكريم

انا اتكلم عن الويندز ابلكيشن (يعني فورم )

اما بالنسبه للويب ابلكاشن فلاعلم

احتمال انو في اختلاف بيم الويب والفورم

لانو انا شغال معي صح على الفورم

1145392391.gif
#5

أول شيء سنقوم باضافة عمود 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]

أتمنى أن تكون الفكرة قد وصلت ان شاء الله

#6

إضافة لما تفضل به 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

#7

راااااااااااااااائع ورووووووووووووعة ومروووووووووع اشكركم بقووووووووووة وبخشوووووووووونة ... دمتم لنا ذخر

#8

عندي لك حل أحلى

وهو باستخدام 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

هذا الموضوع مغلق.

مواضيع مشابهة