aianLee
aianLee

Reputation: 61

GridView Template Button

Here is my gridview:

   <asp:GridView ID="gvconsumer" runat="server" AutoGenerateColumns="False" Width="50%" >
        <Columns>
            <asp:TemplateField HeaderText="">
                <ItemTemplate>
                    <asp:Label ID="lblid" runat="server" Text='<%# Bind("id") %>' Visible="false" ></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Consumer">
                <ItemTemplate>
                    <asp:Label ID="lblconsumer" runat="server" Text='<%# Bind("FirstName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <asp:Label ID="lblname" runat="server" Text='<%# Bind("LastName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Status">
                <ItemTemplate>
                    <asp:Label ID="lblstatus" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="DateCreated">
                <ItemTemplate>
                    <asp:Label ID="lbldatecreaterd" runat="server" Text='<%# Bind("DateCreated") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="">
                <ItemTemplate>
                    <asp:Button ID="btnApprove" runat="server" Text="Approve" OnClick="btnApprove_Click" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="">
                <ItemTemplate>
                    <asp:Button ID="btnReject" runat="server" Text="Reject" OnClick="btnApprove_Click" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

here is my code behind: (AcceptButton)

 if (btnApprove_Click)
    GridViewRow row = ((Button)sender).Parent.Parent as GridViewRow;

    string id = ((Label)row.FindControl("lblid")).Text;
    Response.Write(row.RowIndex);
    string ApprovedStatus = "Approved";

    string status = ClassBiller.ConsumerStatus(int.Parse(id), ApprovedStatus, DateTime.Now);

this is my datalayer for ConsumerStatus():

        string retUpdateStatus = "";

        string consumerStatus = "UPDATE MerchantConsumer SET Status = @Status, DateAccepted = @DateAccepted WHERE ConsumerID = @Consumerid";

        string[] param = { "@Consumerid", "@Status", "@DateAccepted" };
        object[] paramVal = { ConsumerID, Status, DateAccepted };

        try
        {
            ClassDBQuery.ExecNonQuery(consumerStatus, param, paramVal);
        }
        catch (Exception ex)
        {
            throw ex;
        }

        return retUpdateStatus;

this is how Binded the GridView:

    DataTable gridViewConsumer = new DataTable();
    gridViewConsumer = ClassConsumer.GetRows();

    gvconsumer.DataSource = gridViewConsumer;
    gvconsumer.DataBind();

my problem is, i have to double click the button to update the status field of the gridView..but when i check the database(on first click), the Status field is already updated.. Help please....

Upvotes: 0

Views: 1380

Answers (1)

Pawan
Pawan

Reputation: 1075

You need to bind grid again after successful db operation.

Upvotes: 2

Related Questions