Включить сохранение в строке GridView, если текст изменился

1

У меня этот 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", в этой функции я бы включил кнопку сохранения для строки в аргументе команды.

Есть ли более простой/более профессиональный способ сделать это?

Теги:
gridview

1 ответ

0
Лучший ответ

Событие CurrentCellChanged имеет GridView. вы можете использовать его. Другим возможным решением может быть использование RowEnter или RowLeave события.

Другой вариант (только для окон) может быть RowValidating Event, где вы проверяете, IsCurrentRowDirty ли свойство IsCurrentRowDirty

IsCurrentRowDirty Property Возвращает значение, указывающее, не изменяется ли текущая строка.

  • 0
    Я понимаю, что RowValidating доступен только в окнах форм, есть ли альтернатива для веб-форм?
  • 1
    Вы правы, это событие только для форм победы. Я обновил свой ответ. Для веб-форм такого события нет :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню