0

我有一个数据列表,其中显示了来自表详细信息的数据,并且工作正常。现在我需要将此数据列表的一些数据插入另一个表detail2。我为数据列表的每个原始数据提供了一个保存按钮,以便单击此保存按钮时,该原始存储的特定数据到表 detail2。波纹管我的数据列表的设计。

         <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”的值存储起来。我不知道我哪里出错了。帮我解决这个问题

4

1 回答 1

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>
于 2012-06-11T13:24:28.027 回答