我在页面中有一个gridview,还有一个更新按钮,可以对gridview进行批量更新。我的gridview中有5列,其中前3列不可编辑,最后两列有下拉值。
如果我更改页面中的任何一个下拉列表并单击更新,则会保存该页面的所有行。我只需捕获选定的行值并仅更新该行项。此外,我还可以捕获这两个下拉列表的旧值,并将其保存在一个名为历史表的单独表中。任何人都可以建议或建议我实现这个目标吗?
答案 0 :(得分:1)
为每个HiddenField
单元格设置DropDownList
,
<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
)进行比较。如果两者相同则没有变化,否则该行的数据会发生变化,您可以继续保存。