asp.net
  • .net
  • vb.net
  • 2012-01-16 2 views 0 likes 
    0

    は、これが私のデータリストである:取得値

    <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" 
           RepeatLayout="Flow"> 
          <ItemTemplate> 
    
           <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("ID") %>' Visible="False" /> 
           Titre: 
           <asp:Label ID="TitreLabel" runat="server" Text='<%# Eval("Titre") %>' /> 
           <br /> 
           Description: 
           <asp:Label ID="DescriptionLabel" runat="server" 
            Text='<%# Eval("Description") %>' /> 
           <br /> 
    
           <asp:Image ID="Image1" runat="server" 
           ImageUrl='<%# Eval("ID", "Handler.ashx?ID={0}") %>' Width="200" Height="200"/> 
    
           <br /> 
           comments: 
           <asp:Label ID="commentsLabel" runat="server" Text='<%# Eval("comments") %>' /> 
           <br /> 
    
           Ajouter commentaire 
           <asp:button ID="btnAjouter" runat="server" OnCommand="Button_Command" 
           CommandName="add" Text="Ajouter" /> 
           <asp:TextBox ID="TextBoxComments" runat="server"></asp:TextBox> 
           <br/> 
           <br/> 
          </ItemTemplate> 
         </asp:DataList> 
    

    この私のaspx.vbボタンイベント:

    Sub Button_Command(ByVal sender As Object, ByVal e As CommandEventArgs) 
        Dim connectionString As String = WebConfigurationManager.ConnectionStrings("BecsEtMuseauxSQL").ConnectionString 
        Dim con As SqlConnection = New SqlConnection(connectionString) 
    
        con.Open() 
    
        Dim cmd As New SqlCommand("updateComments", con) 
        cmd.CommandType = CommandType.StoredProcedure 
        //I try this .... 
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = DataList1.FindControl("IdLabel").ToString() 
        cmd.Parameters.Add("@Comments", SqlDbType.NVarChar).Value = DataList1.FindControl("TextBoxComments").ToString() 
    
        cmd.ExecuteNonQuery() 
    End Sub 
    

    私はこのようなエラーが表示されます。「オブジェクト参照がオブジェクトインスタンスに定義されていません "

    この状況で、ラベルIdLabelとTextBoxCommentsから値を取得するにはどうすればよいですか?

    +0

    を? – JaredPar

    +0

    cmd.Parameters.Add( "@Ed"、SqlDbType.Int).Value = DataList1.FindControl( "IdLabel")。ToString() cmd.Parameters.Add( "@ Comments"、SqlDbType.NVarChar).Value = DataList1.FindControl( "TextBoxComments")。ToString() – FrankSharp

    +0

    15分後に戻る – FrankSharp

    答えて

    1

    ボタンのコマンドの代わりにDataList's ItemCommandを処理する必要があります。

    次にあなたがe.Item.FindControlとあなたのコントロールを見つけることができます:ASPXの

    Private Sub DataList1_ItemCommand(source As Object, e As System.Web.UI.WebControls.DataListCommandEventArgs) _ 
        Handles DataList1.ItemCommand 
        If e.CommandName = "add" Then 
         Dim IdLabel = DirectCast(e.Item.FindControl("IdLabel"), Label) 
         Dim TextBoxComments = DirectCast(e.Item.FindControl("TextBoxComments"), TextBox) 
         ' ... ' 
        End If 
    End Sub 
    

    を、あなたの冗長Command -handler削除:あなたの代わりにボタンのClickイベントを使用したい場合は、それはだ

    <asp:button ID="btnAjouter" CommandName="add" Text="Ajouter" runat="server" /> 
    

    を可能です。 aspxの上

    Protected Sub btnAjouter_Click(sender As Object, e As EventArgs) 
        Dim container = DirectCast(DirectCast(sender, Control).NamingContainer, DataListItem) 
        Dim IdLabel = DirectCast(container.FindControl("IdLabel"), Label) 
        Dim TextBoxComments = DirectCast(container.FindControl("TextBoxComments"), TextBox) 
        ' ... ' 
    End Sub 
    

    、ボタンにクリックイベントハンドラを追加します。あなたにエラーを与えているライン

    <asp:button ID="btnAjouter" OnClick="btnAjouter_Click" Text="Ajouter" runat="server" /> 
    
    +0

    サブボタンのコマンド(ByValの送信者オブジェクト、ByVal e CommandEventArgs)を再作成する必要がありますか? – FrankSharp

    +0

    前の質問に表示された方法は、ButtonのCommandイベントの代わりにDataListのItemCommandイベントを処理することでした。私はあなたに2つの方法を示しました。 1. DataListのItemCommand(推奨)を処理します。2. ButtonのClickイベントを処理します。私はあなたが両方を混ぜたと仮定します。 –

    関連する問題