2010-11-27 6 views
2

Ich habe ein GridView, an das ich eine Liste gebunden habe - ich möchte Filter der Daten basierend auf mehreren CheckBoxLists zulassen können.WebForms übergeben CheckboxList-Werte an Liste <T>

Für Argumente willen lassen Sie uns sagen, ich habe eine Liste der Jobs, und ich möchte die Jobs von Code filtern - Also ich würde einen CheckBoxList wie

  • C#
  • ASP.NET
  • PHP
  • F #
  • etc ..

Wenn jemand wählt mehr c oden, wie übergibt man die Werte in eine Liste, um an das GridView zu binden? Gibt es eine Möglichkeit, Werte als Array zu übergeben? Oder vielleicht eine Komma getrennte Saite?

Alle Beispiele (Ich bin ein C# Junge) wäre sehr dankbar, und ich hoffe, ich habe es richtig erklärt: S

+0

ist es Web-Anwendung zu gewinnen/und die .net Version Sie verwenden? – TalentTuner

+0

Sorry seine Webforms, .NET 4 C# .. Haben Sie Code Beispiele für Webforms – leen3o

Antwort

0

eine ObservableCollection<T> verwenden. Es erlaubt automatisch die Gridview auf "beobachten", dass die zugrunde liegende Datenquelle hat sich geändert und somit selbst aktualisiert.

+0

Danke für den Tipp, aber es beantwortet nicht die eigentliche Frage? – leen3o

0

Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe. Aber ich mache oft den folgenden Listitem in eine Form abfragbar über LINQ to Objekte zu erhalten:

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

wo immer Sie tun, um Ihre Filterung für den gridview müssen Sie manuell die Liste erstellen, bevor Sie filtern.

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

dann, wenn Sie filtern Sie so etwas wie (zB mit linq2sql) tun können

var jobs = db.Jobs.Where(x => langauges.Contains(x.LanguageCode)); 
gvJobs.DataSource = jobs; 
gvJobs.DataBind(); 
Verwandte Themen