WebForms Передача значений CheckboxList в список <T> - PullRequest
2 голосов
/ 27 ноября 2010

У меня есть GridView, к которому привязан список - я хочу иметь возможность разрешить фильтрацию данных на основе нескольких CheckBoxLists.

В качестве аргументов, скажем, у меня есть список заданий, и я хочу отфильтровать задания по коду - поэтому я бы создал CheckBoxList, например

  • C #
  • ASP.NET
  • PHP
  • F #
  • и т.д ..

Если кто-то выбирает несколько кодов, как передать значения в список для повторной привязки к GridView? Есть ли способ передать значения в виде массива? Или, может быть, строка, разделенная запятыми?

Буду очень признателен за любые примеры (я мальчик на C #), и я надеюсь, что объяснил это правильно: S

Ответы [ 3 ]

0 голосов
/ 15 марта 2011

Я не уверен, что полностью понимаю ваш вопрос. Но я часто делаю следующее, чтобы получить ListItems в форму, запрашиваемую через LINQ для объектов:

var items = cblLanguages.Items.Cast<ListItem>();

// Selected Items
var selectedItems = items.Where(li => li.Selected);

// Item's containing 'C'
var itemsWithC = items.Where(li => li.Text.Contains("C"));

// Values between 2 and 5
var itemsBetween2And5 = from li in items
                        let v = Convert.ToInt32(li.Value)
                        where 2 <= v && v <= 5
                        select li;
0 голосов
/ 15 марта 2011

везде, где вы выполняете фильтрацию для вида сетки, вы должны составить список вручную, прежде чем выполнять фильтрацию.

var languages = new List<string>();
foreach (ListItem item in cblLanguages.Items)
{
    if (item.Selected)
    {
        languages.Add(item.Value);
    }
}

тогда, когда вы фильтруете, вы можете сделать что-то вроде (например, используя linq2sql)

var jobs = db.Jobs.Where(x => langauges.Contains(x.LanguageCode));
gvJobs.DataSource = jobs;
gvJobs.DataBind();
0 голосов
/ 27 ноября 2010

используйте ObservableCollection<T>. он автоматически позволяет сетке " наблюдать ", что базовый источник данных изменился, и таким образом обновлять себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...