如果文本更改,则在GridView行中启用保存

时间:2014-12-18 14:46:34

标签: c# asp.net gridview

我的aspx页面中有这个GridView。每当用户更改此网格中的任何数据时,我都需要启用与该行对应的“保存”按钮。

<asp:GridView ID="FoodBagItemsGridView" ShowFooter="true" AutoGenerateColumns="false"
    DataKeyNames="FoodBagItemId" runat="server" OnDataBound="FoodBagItemsGridView_DataBound"
    OnRowCommand="FoodBagItemsGridView_RowCommand">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:Button runat="server" ID="Save" Text="Save" CommandName="SaveFoodBagItem" CommandArgument='<%# DataBinder.Eval(Container,"RowIndex") %>' Enabled="false" />
            <asp:Button runat="server" ID="Delete" Text="Delete" CommandName="DeleteFoodBagItem" CommandArgument='<%# DataBinder.Eval(Container,"RowIndex") %>' OnClientClick="return confirm('Are you sure ?');" />
        </ItemTemplate>
    </asp:TemplateField>

    <asp:BoundField DataField="FoodBagItemId" HeaderText="Id" />

    <asp:TemplateField HeaderText="Quantity">
        <ItemTemplate>
            <asp:TextBox runat="server" ID="txtItemQuantity" Text='<%# Bind("ItemQuantity") %>' OnTextChanged="EnableSaving"></asp:TextBox>
        </ItemTemplate>
        <FooterTemplate>
            <asp:TextBox runat="server" ID="txtItemQuantityInput"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Name">
        <ItemTemplate>
            <asp:TextBox runat="server" ID="txtItemName" Text='<%# Bind("ItemName") %>' OnTextChanged="EnableSaving" ></asp:TextBox>
        </ItemTemplate>
        <FooterTemplate>
            <asp:TextBox runat="server" ID="txtItemNameInput"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Include In Food Bag">
        <ItemTemplate>
            <asp:CheckBox runat="server" ID="ChkBxIncludeInFoodBag" Checked='<%# Bind("IncludeInFoodBag") %>' OnCheckedChanged="EnableSaving" ></asp:CheckBox>
        </ItemTemplate>
        <FooterTemplate>
            <asp:CheckBox runat="server" ID="ChkBxIncludeInFoodBag"></asp:CheckBox>
        </FooterTemplate>
    </asp:TemplateField>

</Columns>
</asp:GridView>

我想为每个数据列添加一个On Change事件来触发C#函数“Enable Saving”,在这个函数中我将为命令参数中的行启用保存按钮。

有更简单/更专业的方法吗?

1 个答案:

答案 0 :(得分:0)

GridView具有CurrentCellChanged事件。你可以用它。 另一种可能的解决方案是使用RowEnterRowLeave事件。

另一个选项(仅适用于Windows表单)可能是RowValidating您检查IsCurrentRowDirty属性是否已更改的事件

  

IsCurrentRowDirty属性获取一个值,该值指示当前行是否未提交   变化。