Программно редактировать данные обновления в списке данных, выдавая ошибку - PullRequest
0 голосов
/ 30 ноября 2011

Я получил эту ошибку, когда пытался обновить данные в списке данных.это код, который я использовал для редактирования, обновления и удаления данных из списка данных.удаление работает, но обновление не работает, поскольку я изменяю что-то к предыдущим данным путем редактирования.когда я нажимаю кнопку обновления, появляется сообщение об ошибке «Ссылка на объект не установлена ​​для экземпляра объекта».

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    bindDataList()
End Sub

Protected Sub DataList1_CancelCommand(ByVal source As Object, ByVal e As DataListCommandEventArgs)
    DataList1.EditItemIndex = -1
    bindDataList()
End Sub
Protected Sub DataList1_DeleteCommand(ByVal source As Object, ByVal e As DataListCommandEventArgs)
    con.Open()
    Dim cmd As New SqlCommand("delete from tblEmployee ", con)
    cmd.ExecuteNonQuery()
    con.Close()
    DataList1.EditItemIndex = -1
    bindDataList()
End Sub
Protected Sub DataList1_UpdateCommand(ByVal source As Object, ByVal e As DataListCommandEventArgs)
    con.Open()
    Dim cmd As New SqlCommand()
    cmd = New SqlCommand("update tblEmployee set Name=@Name", con)
    cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = DirectCast(DataList1.Controls(0).FindControl("txtEmployeeName"), TextBox).Text
    cmd.ExecuteNonQuery()
    con.Close()
    DataList1.EditItemIndex = -1
    bindDataList()


End Sub
Protected Sub DataList1_EditCommand(ByVal source As Object, ByVal e As DataListCommandEventArgs)
    DataList1.EditItemIndex = e.Item.ItemIndex
    bindDataList()
End Sub

Sub bindDataList()
    Dim mycommand As New SqlCommand("SELECT * FROM tblEmployee where id= '5'", con)
    con.Open()
    DataList1.DataSource = mycommand.ExecuteReader
    DataList1.DataBind()
    con.Close()
End Sub

И дизайн списка данных находится здесь.

  <asp:DataList ID="DataList1" runat="server" OnCancelCommand="Datalist1_CancelCommand" OnDeleteCommand="Datalist1_DeleteCommand" OnEditCommand="Datalist1_EditCommand" OnUpdateCommand="Datalist1_UpdateCommand">
    <ItemTemplate>
    <div style="text-align:center">
    <table>
    <tr><td style="width:200px; height:25px" align="left">
    <asp:Label ID="lblFirstName" runat="server" Text='<%#DataBinder.Eval(Container.Dataitem, "Name")%>'></asp:Label>
    </td>
    <td style="width:50px; height:25px">
    <asp:LinkButton ID="lnkEdit" runat="server" CommandName="Edit">Edit</asp:LinkButton></td>
    <td style="width:50px; height:25px">
    <asp:LinkButton ID="lnkDelete" runat="server" CommandName="Delete">Delete</asp:LinkButton></td>
    </tr>
    </table>
    </div>
    </ItemTemplate>
    <EditItemTemplate>
    <table>
    <tr>
    <td style="width:200px; height:25px" align="left">
    <asp:TextBox ID="txtEmployeeName" runat="server" Text='<%#DataBinder.Eval(Container.Dataitem, "Name")%>'></asp:TextBox>
    </td>
    <td style="width:50px; height:25px" align="left">
    <asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Update">Update</asp:LinkButton>
    </td>
    <td style="width:50px; height:25px" align="left">
    <asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
    </td>
    </tr>
    </table>
    </EditItemTemplate>
    <HeaderTemplate>
    <table style="width:300px">
    <tr><td style="width:200px; height:25px" align="left">
    <strong>Employee Name</strong>
    </td>
    <td style="width:200px; height:25px"></td>
            <td style="width:200px; height:25px"></td>
    </tr>
    </table>
    </HeaderTemplate>
    </asp:DataList>

Я думаю, что проблема где-то в команде обновления.здесь первые две строки трассировки стека NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.] ASP.default_aspx.DataList1_UpdateCommand (источник объекта, DataListCommandEventArgs e).Я не могу поймать, где я ошибся.Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 01 декабря 2011

Поместите это bindDataList() между If Not IsPostBack Then ... End If, чтобы предотвратить обновление сетки при каждой обратной передаче. Это вызовет проблемы при обновлении.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
   If Not IsPostBack Then
      bindDataList()
   End If
End Sub
...