按下该行的按钮更新GridViewRow

时间:2016-05-12 07:22:27

标签: c# asp.net gridview datagridview

我有GridView checkboxdropdownbutton作为模板字段。 单击按钮时,我必须更新数据库中的整行。

这是我的aspx

<asp:GridView runat="server" ID="Gdv" AutoGenerateColumns="False" Font-Size="Small" CssClass="grid" BackColor="White" BorderWidth="0px" CellPadding="4" Width="100%" AllowSorting="True" SkinID="GVSalesManager" GridLines="none" AllowPaging="true" PageSize="10" PagerStyle-ForeColor="#0066cc" PagerStyle-CssClass="gvPagerCss" PagerStyle-Font-Underline="true" PagerStyle-Wrap="true"
OnPageIndexChanging="GdvCPRetailerMap_PageIndexChanging" OnRowDataBound="GdvCPRetailerMap_RowDataBound">
 <Columns>
   <asp:BoundField ReadOnly="true" HeaderText="S.No" DataField="S.No." SortExpression="SNo">
    <ItemStyle HorizontalAlign="Center" Width="2%" />
     <HeaderStyle HorizontalAlign="Center" Font-Bold="true"  Width="2%"/>
    </asp:BoundField>

   <asp:TemplateField ItemStyle-Width="3%" ItemStyle-HorizontalAlign="Center">
      <ItemTemplate>
      <asp:CheckBox ID="chkRow" runat="server" OnCheckedChanged="chkRow_CheckedChanged" AutoPostBack="true"/>
      </ItemTemplate>
   </asp:TemplateField>

   <asp:BoundField ReadOnly="true" HeaderText="Customer Id" ItemStyle-HorizontalAlign="Center" DataField="CustomerID" SortExpression="CustomerID">
<ItemStyle HorizontalAlign="Center" Width="10%" />
<HeaderStyle HorizontalAlign="Center" Font-Bold="true"  Width="10%"/>
   </asp:BoundField>

 <asp:BoundField ReadOnly="true" HeaderText="Firm's Name" ItemStyle-HorizontalAlign="Center" DataField="Firm's Name" SortExpression="SNo">
<ItemStyle HorizontalAlign="Center" Width="20%" />
<HeaderStyle HorizontalAlign="Center" Font-Bold="true"  Width="20%"/>
  </asp:BoundField>

 <asp:BoundField ReadOnly="true" HeaderText="Retailer Name" ItemStyle-HorizontalAlign="Center" DataField="Retialer Name" SortExpression="SNo">
  <ItemStyle HorizontalAlign="Center" Width="20%" />
  <HeaderStyle HorizontalAlign="Center" Font-Bold="true"  Width="20%"/>
 </asp:BoundField>

 <asp:BoundField ReadOnly="true" HeaderText="Pesticide Licence No." ItemStyle-HorizontalAlign="Center" DataField="Pesticide Licence No" SortExpression="SNo">
 <ItemStyle HorizontalAlign="Center" Width="10%" />
 <HeaderStyle HorizontalAlign="Center" Font-Bold="true"  Width="10%"/>
 </asp:BoundField>

<asp:TemplateField HeaderText="Channel Partner-1" HeaderStyle-Font-Bold="true" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center">
 <ItemTemplate>
<asp:DropDownList ID="ddlCP1" Enabled="false" ToolTip="Please Click on the checkbox to change the prefered CP" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlCP1_SelectedIndexChanged"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Channel Partner-2" HeaderStyle-Font-Bold="true" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center">
 <ItemTemplate>
<asp:DropDownList ID="ddlCP2" Enabled="false" ToolTip="Please Click on the checkbox to change the prefered CP" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlCP2_SelectedIndexChanged"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

 <asp:TemplateField ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center">
 <ItemTemplate>
 <asp:Button runat="server" ID="BtnUpdateRow" Text="Update" ToolTip="Update This Record?" OnClick="BtnUpdateRow_Click" BackColor="#336699" ForeColor="#ffffff"/>
 </ItemTemplate>
 </asp:TemplateField>

  </Columns>
</asp:GridView>

这是updatebutton事件

protected void BtnUpdateRow_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    GridViewRow grow = (GridViewRow)btn.NamingContainer;
    //btn.
    CheckBox chkbx = (CheckBox)grow.FindControl("chkRow");

    if (chkbx.Checked != true)
    {
        labelErrormessage.Visible = true;
        labelErrormessage.ForeColor = System.Drawing.Color.Red;
        labelErrormessage.Text = "Please Check/Uncheck the CheckBox and Click Update";
        return;

    }
    else 
    {
        /*--Code to update the row's record in the edatabase.--*/
        ??

        labelErrormessage.Visible = true;
        labelErrormessage.ForeColor = System.Drawing.Color.Green;
        labelErrormessage.Text = "Updated Succesfully";
        return;
    }
}

如何阅读单击按钮的行并更新数据库中dropdownlist个选定的值?

1 个答案:

答案 0 :(得分:0)

如果您在gridview中显示某种标识数据,则可以从行的单元格中获取值grow.Cells[0].Text,然后在数据库中查找记录并更新其值。

如果这是您不想向用户显示的信息,您也可以隐藏ID。该行仍将位于索引0但隐藏。

<强>示例:

    else 
    {
        var record = queryDatabase(grow.Cells[0].Text);

        //update record values

        updateRecord(record);

        labelErrormessage.Visible = true;
        labelErrormessage.ForeColor = System.Drawing.Color.Green;
        labelErrormessage.Text = "Updated Succesfully";
        return;
    }