捕获下拉列表更改和更新

时间:2014-04-21 13:10:57

标签: c# asp.net .net

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

如果我更改页面中的任何一个下拉列表并单击更新,则会保存该页面的所有行。我只需捕获选定的行值并仅更新该行项。此外,我还可以捕获这两个下拉列表的旧值,并将其保存在一个名为历史表的单独表中。任何人都可以建议或建议我实现这个目标吗?

1 个答案:

答案 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)进行比较。如果两者相同则没有变化,否则该行的数据会发生变化,您可以继续保存。