Как проверить CheckBox в GridView на основе условия? - PullRequest
0 голосов
/ 11 января 2011

я новичок. У меня есть четыре поля текстового поля для ItemName, ItemDescription, длины и количества. Один список радиобуттон и его элементы списка являются FixedLength и Random Length. Одно поле кнопки называется Submit и одно gridview.

В GridView у меня есть 4 связанных столбца и 1 шаблонный столбец, например ItemName, ItemDescription, Length, Quantity и IsFixed_f (поле флага). Я добавил один флажок в столбце Шаблон GridView для поля IsFixed_f.

После ввода всех полей текстового поля я должен выбрать один элемент списка в списке радиобуттон (FixedLength или RandomLength). После завершения этих вещей. Если я введу кнопку «Отправить», все значения в текстовом поле будут отображаться под соответствующим именем столбца GridView и флажок, который будет установлен, если выбран список элементов FixedLength, в противном случае checkbox.checked должен иметь значение false. Как это сделать?

В событии «Нажатие кнопки» я использовал вот так

        DataRow DR = null;
        DR = datatable.NewRow();
        DR["ItemName"] = DSItemName.Text.Trim();
        DR["Description"] = txtItemDescription.Text.Trim();
        DR["Length"] = txtLength.Text.Trim();
        DR["Quantity"] = txtQuantity.Text.Trim();
        datatable.Rows.Add(DR);
        GridView.DataSource = datatable;
        GridView.DataBind();

Но я не знаю, как проверить CheckBox и отобразить его в GridView. Пожалуйста, дайте предложения. Если я использую следующий код, он отображает текст «true» с CheckBox в GridView.

        foreach (GridViewRow GVR in gridview.Rows)
        {
            CheckBox cb = (CheckBox)GVR.FindControl("cbIsFixed_f");

            if (cb != null && radiobuttonlist.SelectedItem.Value == "Fixed Length")
            {
                cb.Checked = true;
            }
            else
            {
                cb.Checked = false;
            }
            DR["IsFixed_f"] = cb.Checked;
        }

Ответы [ 3 ]

0 голосов
/ 11 января 2011

Я не совсем уверен, как получить строку из набора данных - я предполагаю, что вы имели в виду dataTable.newRow ().Кроме того, я надеюсь, что ваша tableSchema содержит столбец для ваших значений IsFixed_f.

Если в вашем tableSchema есть дополнительный столбец для ваших значений IsFixed_f, вы можете связать эти значения с помощью checkBoxField.

Как вы упомянулиtemplateField Я предполагаю, что ваша таблица не имеет никакого определения для IsFixed_f?В этом случае вы можете вручную добавить этот столбец в свою схему.

Привязка значения IsFixed_f к определенному флажку (в новой строке сетки) без его сохранения где-либо (набор данных / таблица ?!) - мне кажется невозможным...

Надеюсь, что это может помочь - если нет, опишите подробно вашу проблему!

0 голосов
/ 11 января 2011

Я получил ответ на этот вопрос.

 DR["IsFixed_f"] = radiobuttonlist.SelectedItem.Value == "Fixed Length" ?true : false;

спасибо всем за ваши ответы.

0 голосов
/ 11 января 2011

Вы можете написать обработчик события для события OnRowDataBound gridview. В этом случае вам нужно найти столбец флажка и установить его флажком или без него.

как то так:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  CheckBox c = e.Row.Cells[4].FindControl("YourCheckboxId");
  if(c != null && e.Row.DataItem["sFixed_f"] == true)
  {
    c.Checked = true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...