c#
  • asp.net
  • gridview
  • 2017-09-27 18 views 1 likes 
    1

    私はGridViewに値を表示して更新しようとしています。それは、ラベルにある値を取得し、それを更新しようとするとTextBoxに切り替わることです。その後、その特定の値をGridViewの外のラベルに表示したいと思います。ASP.NETのGridViewを更新できません。C#

    <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
        <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox> 
    </EditItemTemplate> 
    
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
        dt = new DataTable(); 
        dt = (DataTable)Session["anime"]; 
    
        dt.Rows[e.RowIndex]["Product_Quantity"] = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text; 
    
        Session["anime"] = dt; 
        GridView1.EditIndex = -1; 
    
         FillGrid(); 
    
    
        Response.Redirect("view_cart.aspx"); 
    } 
    
    
    
    protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    { 
        if (e.Row.RowType == DataControlRowType.DataRow) 
        { 
         DataRowView drv = e.Row.DataItem as DataRowView; 
         if (drv != null) 
         { 
          sum += Convert.ToInt32(((Label)e.Row.Cells[4].FindControl("Label4")).Text); 
          results.Text = sum.ToString(); 
         } 
        } 
    
    
    } 
    

    私は行を更新しようとするたびに、それが返されます:「オブジェクト参照がオブジェクトインスタンスに設定されていません。」 sum + = Convert.ToInt32(((Label)e.Row.Cells [4] .FindControl( "Label4"))。テキスト);

    これを解決する方法はありますか?

    +0

    どのラインでは? –

    +0

    で:sum + = Convert.ToInt32(((Label)e.Row.Cells [4] .FindControl( "Label4"))。テキスト); –

    +0

    行の4番目のセルにはラベルが含まれていますか?細胞のインデックスは0から始まります。 –

    答えて

    0

    行を編集すると、EditTemplateが使用されます。そしてそこにLabel4はありません。したがって、コントロールが見つからず、コードが例外をスローします。 TextBox2コントロールを検索する必要があります。

    <EditItemTemplate> 
        <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox> 
    </EditItemTemplate> 
    
    +0

    ヘッドアップのおかげで、私はこの問題を解決することができました。 –

    0

    私は、次の手順を実行して、この問題を解決するために管理: - あなたは、例外を得るのですか

    protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    { 
        if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit) 
        { 
    
    
        } 
    
        else if (e.Row.RowType == DataControlRowType.DataRow) 
        { 
         sum += Convert.ToInt32(((Label)e.Row.Cells[4].FindControl("Label4")).Text); 
         results.Text = sum.ToString(); 
    
        } 
    
    } 
    
    関連する問題