将错误对象引用设置为未设置为datalist中对象的实例

时间:2012-06-11 13:10:28

标签: asp.net sql datalist

我有一个数据列表,其中显示来自表格详细信息的数据并且工作正常。现在我需要将这个datalist的一些数据插入另一个表detail2。我为每个原始数据主义者提供一个保存按钮,以便在单击此保存按钮时将该原始商店的特定数据添加到表格详细信息2中。吼我的数据主义者的设计。

         <asp:DataList ID="drecord" runat="server" Font-Bold="false" Font-Names="times new roman" Font-Size="Small" DataKeyField="id" RepeatColumns="1">

          <ItemTemplate>              
          <div><table>
             <tr><td><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# GetImageURL(Eval("Pic")) %>' PostBackUrl='<%# Eval("id", "qrystng.aspx?id={0}") %>'/><br />
            <asp:LinkButton ID="Name1" runat="server" ForeColor="Blue" Text='<%#Container.DataItem("Name")%>'><br />
            </asp:LinkButton><asp:Label ID="id" runat="server" Text='<%#Container.DataItem("id")%>'></asp:Label></td>
            <td><asp:Button ID="insert" runat="server" BorderStyle="None" Font-Bold="true" Text="save" OnClick="saveinsert_click"/></td></tr>
            </table></div>                 
            </ItemTemplate>
 </asp:DataList>

和此onclick事件saveinsert用于将数据插入表detail2。

  Sub saveinsert(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim cmd As New SqlCommand("insert into detail2(serial,id) values('" & fid & "',@rid)", con)
    cmd.Parameters.Add("@rid", SqlDbType.VarChar).Value = DirectCast(drecord.Controls(0).FindControl("id"), Label).Text
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
  End sub

但是当我点击插入按钮时,它会给出错误 “你调用的对象是空的。” 异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

并显示此行的错误 “cmd.Parameters.Add(”@ rid“,SqlDbType.VarChar).Value = DirectCast(drecord.Controls(0).FindControl(”id“),Label).Text”

数据列表正确显示记录。我需要将标签“id”的值存储起来。我无法抓住我出错的地方。帮帮我这个

1 个答案:

答案 0 :(得分:0)

使用datalist的ItemCommand事件:

Protected Sub drecord_ItemCommand(source As Object, e As DataListCommandEventArgs)
    If e.CommandName = "CommabdName" Then
     Dim Label1 As Label =  DirectCast(e.item.FindControl("id"), Label)
     Dim labelText As string = Label1.Text
    //write your code here
    End If
End Sub

     <asp:DataList ID="drecord" runat="server" Font-Bold="false" Font-Names="times new roman" Font-Size="Small" DataKeyField="id" RepeatColumns="1">

          <ItemTemplate>              
...................
            <td><asp:Button ID="insert" CommandName="CommabdName" runat="server" BorderStyle="None" Font-Bold="true" Text="save" />
.........................               
            </ItemTemplate>
 </asp:DataList>