0

テーブルの詳細からのデータが表示されているデータリストがあり、正常に機能しています。次に、このデータリストの一部のデータを別のテーブルdetail2に挿入する必要があります。データリストの各rawに保存ボタンを指定して、この保存ボタンをクリックすると、そのrawストアの特定のデータがテーブル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 に答える