Mohammad Shahbaz
Mohammad Shahbaz

Reputation: 423

Getting value from textbox in gridview

I have a GridView on which I am binding 2 textbox and a update button. grid view is dynamic so Row numbers can vary depending upon the size of dataset. Now what I want is when I change values in this textbox and click on update then data for that row in database should get updated. The textbox values in database should get updated.

This is my code:

<asp:GridView ID="dgAbstractSummary" runat="server" AutoGenerateColumns="False"                                 OnRowDataBound="dgAbstractSummary_RowDataBound" OnRowCreated="dgAbstractSummary_RowCreated"
                                Visible="true">
                                <Columns>
                                    <asp:BoundField HeaderText="ID" DataField="id"  HtmlEncode="false"></asp:BoundField>
                                    <asp:BoundField HeaderText="Abstract Title" DataField="title" HtmlEncode="false"></asp:BoundField>
                                    <asp:TemplateField HeaderText="Significance Score">
                                        <ItemTemplate>
                                            <asp:TextBox ID="txtSignificanceScore" AutoPostBack="true" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"significanceScore")%>'></asp:TextBox>                                                
                                            <div class="voffset3"></div>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                     <asp:TemplateField HeaderText="Innovation Score">
                                        <ItemTemplate>
                                            <asp:TextBox ID="txtInnovationScore" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"innovationScore")%>'></asp:TextBox>                                                
                                            <div class="voffset3"></div>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                   <asp:TemplateField HeaderText="">
                                        <ItemTemplate>
                                           <asp:Button AutoPostBack="true" CssClass="btn btn-primary btn-embossed" ID="btnUpdate" runat="server"
                                                                   Text="Update"
                                                                   OnClick="btnUpdate_Click" CommandArgument='<%#Eval("Id") %>' />
                                                                <div class="voffset3"></div>
                                        </ItemTemplate>
                                        </asp:TemplateField>
                                </Columns>
                                <HeaderStyle CssClass="panel-default"></HeaderStyle>
                                <RowStyle CssClass=""></RowStyle>
  </asp:GridView>

C#

   dgAbstractSummary.DataSource = dsResult; // dataset contains values which I am binding to grid columns
   dgAbstractSummary.DataBind();

    protected void btnUpdate_Click(object sender, EventArgs e)
    {
        Button myUpdateButton = (Button)sender;                       
    }

Here Id (first column) is the unique key for each row.

Upvotes: 0

Views: 2226

Answers (1)

SANM2009
SANM2009

Reputation: 1998

Use find control function to find the two text boxes on the grid view row using your buttons sender event.

Something like this.

Button btn = (Button)sender;   
GridViewRow gvr = (GridViewRow)btn.NamingContainer;
TextBox details = gvr.FindControl("detailsText") as TextBox;
//do something with details 
TextBox cusID = gvr.FindControl("TextBox2") as TextBox;

Upvotes: 2

Related Questions