vadim
vadim

Reputation: 211

Gridview update button

I have a GridView with a button which sets all rows into edit mode (which is what I want). However I was wondering if there is a way to create a button that will update the whole gridview with my changes. Here is the code behind this.

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" 
        onrowcommand="gvUsers_RowDataBound">
    <Columns>


       <asp:TemplateField HeaderText="labelID" Visible="false">
            <ItemTemplate>
                <asp:Label ID="ID" runat="server" Text='<%# Eval("id") %>' />
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="First Name">
            <ItemTemplate>
                <asp:Label ID="labelfirstname" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# Eval("firstname") %>' />
                <asp:TextBox ID="txtFirstName" Visible='<%# IsInEditMode %>' runat="server" Text='<%# Eval("firstname") %>' />
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Last Name">
            <ItemTemplate>
                <asp:Label ID="labellastname" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# Eval("lastname") %>' />
                <asp:TextBox ID="txtLastName" Visible='<%# IsInEditMode %>' runat="server" Text='<%# Eval("lastname") %>' />

            </ItemTemplate>
        </asp:TemplateField>


    </Columns>
    </asp:GridView>


<asp:Button ID="Button1" runat="server" Text="Edit Mode" onclick="Button1_Click1" />
<asp:Button ID="Button2" runat="server" Text="View Mode" onclick="Button2_Click1" />

And here is the c#

 private bool isEditMode = false;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindData();
        }
    }
    private void BindData()
    {

        string connectiongString = "Data Source=WSCJTCSQ1;Initial Catalog=LiquorStore;Integrated Security=True";
        SqlConnection myConnection = new SqlConnection(connectiongString);
        SqlDataAdapter ad = new SqlDataAdapter("SELECT id, firstname, lastname, nickname FROM Company", myConnection);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        gvUsers.DataSource = ds;
        gvUsers.DataBind();

    }

    protected bool IsInEditMode
    {

        get { return this.isEditMode; }

        set { this.isEditMode = value; }

    }

    protected void gvUsers_RowDataBound(object sender, GridViewCommandEventArgs e)
    {

    }

    protected void Button1_Click1(object sender, EventArgs e)
    {
        isEditMode = true;

        BindData();
    }

    protected void Button2_Click1(object sender, EventArgs e)
    {

        isEditMode = false;

        BindData();
    }

Thank you in advance!!

Upvotes: 0

Views: 762

Answers (1)

COLD TOLD
COLD TOLD

Reputation: 13579

You can iterate thru you rows and get values in a textbox for specific row

foreach (GridViewRow row in gvUsers.Rows)
    {
        TextBox txtFirstName = row.FindControl("txtFirstName") as TextBox;
        TextBox txtLastName = row.FindControl("txtLastName") as TextBox;

        if (txtFirstName.Text!="" && txtLastName.Text!="")
        {
           // do what you need with values
        }

    }

Upvotes: 1

Related Questions