Типовая задача GridView+CheckBox

Боримир
Дата: 16.05.2010 12:46:33
Здравствуйте, коллеги!
Подскажите, пожалуйста, решение типовой задачи.
Есть список настроек фильтра, который предлагается пользователю. Этот список я загружаю в потомок DataTable. Поле Checked, добавленных в эту таблицу, является типа bool и фактически является меткой, выбрана ли конкретная строка.
Я использую GridView, с которым связываю DataTable с настройками.
Проблема 1. CheckBoxField, который связан с полем Checked, при показе GridView является недоступным для ввода. Я всяко пробовал, пришлось в итоге переделать на

<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("Checked") %>' />
</ItemTemplate>
</asp:TemplateField>

Теперь можно выделять чекбоксы, но что дальше делать непонятно. А мне нужно пройти по таблице, определить, которые строки отмечены чекбосами, получить для каждой такой строки связанную строку из DataTable, а потом поместить в List<> и, например, в Session для использования на другой странице.

Коллеги, напишите, пожалуйста, типовое решение данной задачи, с примерами кода если можно.
# Darth Vader #
Дата: 16.05.2010 16:10:15
Боримир
Здравствуйте, коллеги!
Подскажите, пожалуйста, решение типовой задачи.
Есть список настроек фильтра, который предлагается пользователю. Этот список я загружаю в потомок DataTable. Поле Checked, добавленных в эту таблицу, является типа bool и фактически является меткой, выбрана ли конкретная строка.
Я использую GridView, с которым связываю DataTable с настройками.
Проблема 1. CheckBoxField, который связан с полем Checked, при показе GridView является недоступным для ввода. Я всяко пробовал, пришлось в итоге переделать на

<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("Checked") %>' />
</ItemTemplate>
</asp:TemplateField>

Теперь можно выделять чекбоксы, но что дальше делать непонятно. А мне нужно пройти по таблице, определить, которые строки отмечены чекбосами, получить для каждой такой строки связанную строку из DataTable, а потом поместить в List<> и, например, в Session для использования на другой странице.

Коллеги, напишите, пожалуйста, типовое решение данной задачи, с примерами кода если можно.



если ты хочешь прочитать к примеру состояния чекбоксов в твоем темплейтном поле то накидал вот



  for (int i = 0; i < ГридВью.Rows.Count; i++)
        {

            CheckBox My = (CheckBox)GridViewStat.Rows[i].FindControl("CheckBox1");

            if (My.Checked) // флаг стоит
            {

              //бла бла бла (апдейтишь строки твоей дататабле и пихаешь ее в сессию после чего читаешь сессию на другой веб форме проверяя на нот нул)


            }


        }

Боримир
Дата: 16.05.2010 18:28:22
Ага, но как получить строку данных, связанную с i-ой строкой GridView? У GridView Row есть поле DataItem и оно пусто.
# Darth Vader #
Дата: 16.05.2010 18:38:58
Боримир
Ага, но как получить строку данных, связанную с i-ой строкой GridView? У GridView Row есть поле DataItem и оно пусто.


с помощью той же привязки данных

смотри в сторону CommandArgument