مرحبا عندي مشكلة مش قادر اقرأ قيمة على الgridview في الevent RowCommand
حيث لم تصلح هذا الكود معي:
GridView1.SelectedRow.Cells(4).Text
بيطلعلي ERROR:
OBJECT REFERENCE NOT SET TO AN INTSANCE
مرحبا عندي مشكلة مش قادر اقرأ قيمة على الgridview في الevent RowCommand
حيث لم تصلح هذا الكود معي:
GridView1.SelectedRow.Cells(4).Text
بيطلعلي ERROR:
OBJECT REFERENCE NOT SET TO AN INTSANCE
صبرا غزة هاشم أن نصر الله قريب
أخي ممكن ا ن ترفق لنا الاجرائية أو الحدث الذي يحوي سطر الكود السابق .....
تم تعديل هذه المشاركة بواسطة محمد سماقية في 5 فبراير 2008 في 11:54
-----------------------------------------------------------------------------------------------------------------------------
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
Mohammad Sonaiea
هذا هو الحدث
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
صبرا غزة هاشم أن نصر الله قريب
أخي انت مشكلتك في هذا السطر
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
هذا الموضوع مغلق.