У меня есть веб-форма с GridView.В этом GridView у меня есть привязанный к базе данных CheckBoxField.У меня также есть поле с привязкой к данным, которое можно редактировать, с кодом состояния (order-statuscode).
Я хочу достичь следующего:
Если пользователь редактирует строку и проверяетфлажок, код состояния должен иметь новое назначенное значение, в случае, если пользователь забывает обновить код статуса.
ASP.Net:
<asp:GridView ID="gvRestordrer" runat="server" DataSourceID="basketConn2" AutoGenerateColumns="False" DataKeyNames="k_ordre_id" CssClass="gvBasket" GridLines="None" Width="706px" AllowPaging="true" PageSize="10" OnRowEditing="getOrderDetails" OnRowCancelingEdit="clearOrderDetails" OnRowUpdating="clearOrderDetails">
<RowStyle CssClass="gvRow" />
<Columns>
...
// BoundField with statuscode. This value need to be updated on rowupdating, if Checkboxfield has been checked by the user
<asp:BoundField DataField="k_order_statuscode" HeaderText="Statuscode" SortExpression="k_order_statuscode" >
<HeaderStyle CssClass="gvHeader" />
</asp:BoundField>
// Checkboxfield bound to a database bool "k_order_completed"
<asp:CheckBoxField DataField="k_order_completed" HeaderText="Completed?" SortExpression="k_order_completed" >
<HeaderStyle CssClass="gvHeader" />
</asp:CheckBoxField>
// Commandfield
<asp:CommandField DeleteText="" EditText="Handle Order" ShowDeleteButton="True" ShowEditButton="True" UpdateText="Update Order" >
<HeaderStyle CssClass="gvHeader" />
</asp:CommandField>
...
</asp:GridView>
C # stuff:
protected void clearOrderDetails(object sender, GridViewUpdateEventArgs e)
{
lblOrdreDetaljer.Text = "";
int index = Convert.ToInt32(e.RowIndex);
// Not working
if (gvRestordrer.Rows[index].Cells[4].Value == true)
{
basketConn2.UpdateParameters["k_order_statuscode"].DefaultValue = "4";
}
}
Есть ли другие решения, кроме создания TemplateField и использования флажка внутри этого?Я полагаю, что должен быть более простой способ, но Google не дает мне ответа.
Любая помощь будет оценена.