У меня этот GridView на моей странице aspx. Всякий раз, когда пользователь меняет какие-либо данные в этой сетке, мне нужна кнопка "Сохранить", соответствующая этой строке для включения.
<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 для каждого столбца данных для запуска функции С# "Enable Saving", в этой функции я бы включил кнопку сохранения для строки в аргументе команды.
Есть ли более простой/более профессиональный способ сделать это?
Событие CurrentCellChanged
имеет GridView. вы можете использовать его. Другим возможным решением может быть использование RowEnter
или RowLeave
события.
Другой вариант (только для окон) может быть RowValidating
Event, где вы проверяете, IsCurrentRowDirty
ли свойство IsCurrentRowDirty
IsCurrentRowDirty Property Возвращает значение, указывающее, не изменяется ли текущая строка.