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

مشكلة بالgridview

مغلق
بدأه Mohammad Mishal في 5 فبراير 2008 · 3 رد · 889 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا عندي مشكلة مش قادر اقرأ قيمة على الgridview في الevent RowCommand

حيث لم تصلح هذا الكود معي:

GridView1.SelectedRow.Cells(4).Text

بيطلعلي ERROR:

OBJECT REFERENCE NOT SET TO AN INTSANCE

صبرا غزة هاشم أن نصر الله قريب

#2

أخي ممكن ا ن ترفق لنا الاجرائية أو الحدث الذي يحوي سطر الكود السابق .....

تم تعديل هذه المشاركة بواسطة محمد سماقية في 5 فبراير 2008 في 11:54

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

#3

هذا هو الحدث

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

Session("TaskID") = e.CommandArgument

Try

If e.CommandName = "Download" Then

DownloadFile(GridView1.SelectedRow.Cells(4).Text, True)

ElseIf e.CommandName = "Select" Then

Dim Q As String

Q = "Select Task from Tasks where TaskID=" & e.CommandArgument

Dim Tbl As DataTable

Tbl = ListOp.TableOf(Q)

TextBox1.Text = Tbl.Rows(0)("Task")

ListOp.Exec("Update Tasks set Recived=1 where TaskID=" & e.CommandArgument)

LoadTasks()

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

تم تعديل هذه المشاركة بواسطة Mohammad Mishal في 5 فبراير 2008 في 12:04

صبرا غزة هاشم أن نصر الله قريب

#4

أخي انت مشكلتك في هذا السطر

DownloadFile(GridView1.SelectedRow.Cells(4).Text, True)

يجب ان لا تستعمل SelectedRow من أجل جلب السطر

والحل سوف كالتالي:

ضمن حدث RowCreated للـGridView

للزر أو العنصر الذي تم النقر عليه من أجل تنفيد الاجرائية الـdownload اسند رقم السطر الحالي

 DownloadButton.CommandArgument = e.Row.RowIndex.ToString()

والآن ضمن حدث RowCommand تستطيع جلب index السطر كتالي

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = CustomersGridView.Rows(index)
DownloadFile(Server.HtmlDecode(row.Cells(2).Text))

وايضا هذا مثال من microsoft يمكن ان يفيدك

<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Sub CustomersGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)

	' If multiple buttons are used in a GridView control, use the
	' CommandName property to determine which button was clicked.
	If e.CommandName = "Add" Then

	  ' Convert the row index stored in the CommandArgument
	  ' property to an Integer.
	  Dim index As Integer = Convert.ToInt32(e.CommandArgument)

	  ' Retrieve the row that contains the button clicked 
	  ' by the user from the Rows collection.
	  Dim row As GridViewRow = CustomersGridView.Rows(index)

	  ' Create a new ListItem object for the customer in the row.	 
	  Dim item As New ListItem()
	  item.Text = Server.HtmlDecode(row.Cells(2).Text)

	  ' If the customer is not already in the ListBox, add the ListItem 
	  ' object to the Items collection of the ListBox control. 
	  If Not CustomersListBox.Items.Contains(item) Then

		CustomersListBox.Items.Add(item)

	  End If

	End If

  End Sub

  Sub CustomersGridView_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

	' The GridViewCommandEventArgs class does not contain a 
	' property that indicates which row's command button was
	' clicked. To identify which row's button was clicked, use 
	' the button's CommandArgument property by setting it to the 
	' row's index.
	If e.Row.RowType = DataControlRowType.DataRow Then

	  ' Retrieve the LinkButton control from the first column.
	  Dim addButton As LinkButton = CType(e.Row.Cells(0).Controls(0), LinkButton)

	  ' Set the LinkButton's CommandArgument property with the
	  ' row's index.
	  addButton.CommandArgument = e.Row.RowIndex.ToString()

	End If

  End Sub

</script>

<html  >
  <head runat="server">
	<title>GridView RowCommand Example</title>
</head>
<body>
	<form id="form1" runat="server">

	  <h3>GridView RowCommand Example</h3>

	  <table width="100%">		 
		<tr>				
		  <td style="width:50%">

			<asp:gridview id="CustomersGridView" 
			  datasourceid="CustomersSource"
			  allowpaging="true" 
			  autogeneratecolumns="false"
			  onrowcommand="CustomersGridView_RowCommand"
			  onrowcreated="CustomersGridView_RowCreated"  
			  runat="server">

			  <columns>
				<asp:buttonfield buttontype="Link" 
				  commandname="Add" 
				  text="Add"/>
				<asp:boundfield datafield="CustomerID" 
				  headertext="Customer ID"/>
				<asp:boundfield datafield="CompanyName" 
				  headertext="Company Name"/> 
				<asp:boundfield datafield="City" 
				  headertext="City"/>		 
			  </columns>

			</asp:gridview>

		  </td>

		  <td style="vertical-align:top; width:50%">

			Customers: <br/>
			<asp:listbox id="CustomersListBox"
			  runat="server"/> 

		  </td>  
		</tr>	  
	  </table>

	  <!-- This example uses Microsoft SQL Server and connects  -->
	  <!-- to the Northwind sample database. Use an ASP.NET	 -->
	  <!-- expression to retrieve the connection string value   -->
	  <!-- from the Web.config file.							-->
	  <asp:sqldatasource id="CustomersSource"
		selectcommand="Select [CustomerID], [CompanyName], [City] From [Customers]"
		connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
		runat="server"/>

	</form>
  </body>
</html>

تم تعديل هذه المشاركة بواسطة محمد سماقية في 5 فبراير 2008 في 12:44

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

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

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