флажок, созданный в codebehind, событие onCheckChanged не запускается - PullRequest
0 голосов
/ 28 ноября 2018

Я создал флажок в виде сетки через 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...