В моем GridView есть флажок (редактируемый)
Я хочу, чтобы когда пользователь установил или снял флажок, чтобы обновлять базу данных на основе этого значения
Моя проблема в том, что я не могу выбрать строку в сетке
Вот мой скрипт gridview
<asp:GridView ID="grdTags" runat="server" AutoGenerateColumns="false" OnSelectedIndexChanged="grdTags_SelectedIndexChanged"
AllowPaging="false" AllowSorting="True" OnSelectedIndexChanging="grdTags_SelectedIndexChanging"
DataKeyNames="ID"
DataSourceID="dsTagsDetailsSelect" OnRowDataBound="grdTags_RowDataBound">
<Columns>
<asp:CommandField HeaderText="" SelectText="Select" ShowSelectButton="True" ControlStyle-Font-Size="Small">
<HeaderStyle BackColor="Gainsboro" />
</asp:CommandField>
<asp:TemplateField HeaderText="Add">
<HeaderStyle BackColor="Gainsboro" />
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbxAdd"
Checked='<%# Eval("Added") %>' AutoPostBack="true"
OnCheckedChanged="cbxAdd_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
, а это мой код за
protected void cbxAdd_CheckedChanged(object sender, EventArgs e)
{
try
{
CheckBox cbxAdd;
GridViewRow selectedRow;
Int32 RepID = Convert.ToInt32(hfRepID.Value.ToString());
// Cast the sender object to a CheckBox
cbxAdd = (CheckBox)sender;
// We can find the row we clicked the checkbox in by walking up the control tree
selectedRow = (GridViewRow)cbxAdd.Parent.Parent;
// GridViewRow has a DataItemIndex property which we can use to look up the DataKeys array
Int32 ID = (int)grdTags.DataKeys[selectedRow.DataItemIndex].Value;
Int32 Checked = (cbxAdd.Checked) ? 1 : 0;
SqlConnection conn = OpenConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 300;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "TagInsertDelete";
//cmd.Parameters.Add(new SqlParameter("@RepID", RepID));
cmd.Parameters.Add(new SqlParameter("@ID", ID));
cmd.Parameters.Add(new SqlParameter("@Add", Checked));
cmd.ExecuteScalar();
}
catch(Exception ex)
{
throw ex;
}
}
Достигнув этой строки, я получаю ошибку
Int32 ID = (int)grdTags.DataKeys[selectedRow.DataItemIndex].Value;
ОШИБКА:
Невозможно получить значение локальной переменной или аргумента, потому что оно недоступно в этом указателе инструкции, возможно, потому, что оно было оптимизировано.