捕获下拉更改和更新

本文关键字:更新 | 更新日期: 2023-09-27 17:59:15

我在一个页面中有一个gridview,还有一个更新按钮,可以对gridview进行批量更新。我的网格视图中有5列,其中前3列不可编辑,后两列有下拉值。

如果我更改页面中的任何一个下拉列表并单击"更新",它将保存该页面的所有行。我只需要捕获选定的行值,并只更新该行项目。除此之外,我如何捕捉这两个下拉列表的旧值,并将其保存在一个单独的表中,该表称为历史表。有人能建议我实现这一点吗?

捕获下拉更改和更新

每个DropDownList细胞都有一个HiddenField,如

<asp:GridView runat="server" id="gv" AutoGenerateColumns="false">
 <Columns>
    <asp:TemplateField>
     <ItemTemplate>
       <asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList>
       <asp:HiddenField ID="hfddl1Val" runat="server" value='<%# Eval("col_name") %>' />
     </ItemTemplate>
    </asp:TemplateField>
 </Columns>
</asp:GridView>

C#

protected void btn_save(object sender,EventArgs e)
{
 foreach(GridViewRow row in gv.Rows)
 {
   HiddenField hf = (HiddenField)row.FindControl("hfddl1Val");
   DropDownList ddl = (DropDownList)row.FindControl("ddl1");
   if(hf.Value != ddl.SelectedValue)
   {
      //save
   }
 }
}

然后在更新时,循环遍历每一行,并将HiddenField值(将是以前的数据)与DropDownList当前值(作为ddl1.SelectedValue)进行比较。如果两者相同,则没有更改,否则该行的数据将更改,您可以继续保存。