Я создал флажок в виде сетки через codebehind.это делается с помощью кода, потому что тип отображаемого элемента управления зависит от поля типа в базе данных.(System.Boolean)
Я создал флажок и добавил обработчик событий для OnCheckChanged, но он не срабатывает и при включенной обратной передаче.я знаю, что должен сохранить значение в viewstate, но не могу захватить событие из элемента управления, чтобы сохранить новое значение!
if (PreferenceType.ToLower() == "system.boolean")
{
var cb = new CheckBox();
cb.ID = "chkPreferenceValue";
div.Controls.Add(cb);
if (mode == RenderMode.Insert)
hfPrefValue.Value = cb.Checked.ToString();
else
{
var chk = false;
bool.TryParse(hfPrefValue.Value, out chk);
cb.Checked = chk;
}
cb.AutoPostBack = true;
cb.Visible = true;
cb.CheckedChanged += new EventHandler(InsertPropValueFromInsertCB_CheckedChanged);
}
вот событие, я пыталсясохраните его в скрытом поле и viewstate, но ни один из них не работает, потому что событие никогда не вызывается.
private void InsertPropValueFromInsertCB_CheckedChanged(object sender, EventArgs e)
{
var cb = sender as CheckBox;
var hf = cb.FindSiblingRecursive<HiddenField>("hfNewPreferenceValue");
hf.Value = cb.Checked.ToString();
ViewState[$"PropRowValue{((GridViewRow)hf.Parent.Parent).RowIndex}"] = cb.Checked;
}