捕获下拉更改和更新
本文关键字:更新 | 更新日期: 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
)进行比较。如果两者相同,则没有更改,否则该行的数据将更改,您可以继续保存。