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

تمرير القيمة من Row في DataGrid إلى Label

مغلق
بدأه habeab في 6 أغسطس 2007 · 2 رد · 786 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ...

لدي DataGrid

وأريد أن أحدد قيمة ID بمجرد الضغط على الـ Row في DataGrid وتمرير المتغير في Label

وجدت هذا الكود ولكن لم استطع تمرير القيمة إلى داخل الـ Label

 Protected Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
	  If e.Item.ItemType = ListItemType.Item OrElse _
		e.Item.ItemType = ListItemType.AlternatingItem OrElse _
		e.Item.ItemType = ListItemType.SelectedItem Then
		e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='beige';this.style.cursor='hand'")
		e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='white';")
		e.Item.Attributes.Add("onclick", "java script:__doPostBack('" & "DataGrid1:" & "_ctl" & _
		(e.Item.ItemIndex + 2) & ":_ctl0','')")
	  End If
	End Sub

وإن كان هناك اي طريقة أخرى ، فلا مانع .

تم تعديل هذه المشاركة بواسطة habeab في 6 أغسطس 2007 في 10:01

اللهم صلي على محمد وعلى آله وصحابته أجميعن إلى يوم الدين

#2

مشكور يا أخوان حصلت الحل

وللفائدة أضع الحل بين يديكم

e.Row.Attributes("onclick") = Me.ClientScript.GetPostBackEventReference(GridView1, "Select$" + e.Row.RowIndex.ToString())

في الحدث

GridView1_RowDataBound

وتمرير القيمة إلى الـ Label

		Dim x As String = GridView1.SelectedValue.ToString
		lbl.text = x

في الحدث

GridView1_SelectedIndexChanged

وبالله التوفيق،،

تم تعديل هذه المشاركة بواسطة habeab في 6 أغسطس 2007 في 11:46

اللهم صلي على محمد وعلى آله وصحابته أجميعن إلى يوم الدين

#3

في الحقيقة مايكروسوفت تنصح المطورين بان لا يعتمدوا على الكود الذي يتم انشاؤه عن طريق السيرفر في صفحات الhtml عند تشغيل الصفحة ومثال ذلك ان تعتمد على الكود الذي يقوم بعمل postback عند عمل selection.الكود الذي كتبته قد يعمل مع النسخة الحالية من asp.net لكن مايكروسوفت لا تضمن ان يستمر ذلك في النسخة القادمة فالجزء "Select$" قد يتغير و يصبح مثلا "SelectRow_" وهكذا.

احسن شيء هو اضافة عمود Button من نوع Select ثم تغييره الى templatefield ثم في الحدث RowDataBound حدد قيمة الonclick بالاعتماد على الدالة GetPostBackEventReference:

aspx:

<asp:TemplateField ShowHeader="False">
					<ItemTemplate>
						<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select"
							Text="Select"></asp:LinkButton>
					</ItemTemplate>
				</asp:TemplateField>

قم باخفاء العمود الذي يحوي الزر Select وحدد قيمة onclick:

c#

if (e.Row.RowType == DataControlRowType.DataRow)
		{

			e.Row.Cells[0].Style["display"] = "none";
			e.Row.Attributes["onclick"] = this.ClientScript.GetPostBackEventReference(e.Row.FindControl("LinkButton1"), "");
		}

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

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