2009-09-22 7 views
1

J'ai un site Web programmé dans Asp.Net et utilise un ListView pour l'affichage des données. Les données proviennent d'un LinqDataSource.DataBound CheckBoxList

Dans mon EditItemTemplate j'ai un CheckBoxList qui se composent de:

<asp:CheckBoxList runat="server" ID="TypeCheckBoxList" RepeatColumns="2"> 
<asp:ListItem Value="128">6.-10. klasse<br />Norddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="64">6.-10. klasse<br />Syddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="32">Gået ud af skolen<br/>Norddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="16">Gået ud af skolen<br/>Syddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="8">Ekstra støtte<br/>Norddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="4">Ekstra støtte<br />Syddjurs vejleder</asp:ListItem> 
<asp:ListItem Value="2">Kontakt</asp:ListItem> 
<asp:ListItem Value="1">Om os<br />Medarbejdere</asp:ListItem> 
</asp:CheckBoxList> 

J'ai une colonne appelée type dans ma db et c'est un tinyint. Donc je peux dire (byte) Eval ("Type").

Mais comment est-ce que je note mon Eval ("Type") à CheckBoxList si Eval ("Type") est 3, alors les deux derniers éléments sont sélectionnés?

J'ai essayé de définir une valeur cachée qui se lie à Type, puis dans le contrôle CheckBoxList OnLoad les éléments sélectionnés. Mais ça n'a pas marché.

Répondre

3

C'est la façon de le faire, avec la valeur hidded liée à Type, mais sur l'événement ItemDataBound de ListView.

Donc, l'événement ressemblerait à quelque chose comme ceci:

protected void ListViewId_ItemDataBound (object sender, ListViewItemEventArgs e) 
{ 
    HiddenField hdfType = (HiddenField)e.Item.FindControl("hdfType"); 
    CheckBoxList TypeCheckBoxList = (HiddenField)e.Item.FindControl("TypeCheckBoxList"); 

    // and you put the hidden just for EditItem and do: 
    if (hdfType != null) 
     foreach (ListItem item in TypeCheckBoxList.Items) 
      if (int.Parse(item.Value) < int.Parse(hdfType.Value)) 
       item.Selected = true; 
} 

(j'ai écrit tout cela de ma tête, donc il pourrait y avoir quelques petites erreurs)

+0

Je vais y regarder :) mais c'est seulement pour EditItem il y a une checkboxlist. Pas tous les articles. –

+0

Vous pouvez placer HiddenField uniquement pour l'élément EditItem. Et puis faire toutes les vérifications/sélection dans les accolades après: si (hdfType! = Null) { ...} –

+0

Il ne vous le travail. Merci beaucoup! :) –

0

D'abord, vous devez écrire un javascript fonction comme celui-ci

function Selected(value,type) 

{ 

    if(value<type) 
    return true; 
    else 
    return false; 
} 



<asp:ListItem Value="32" Selected= javascript:function Selected(32,Eval("Type"))>Gået ud af skolen<br />Norddjurs vejleder</asp:ListItem>  
<asp:ListItem Value="16" Selected= javascript:function Selected(16,Eval("Type")>Gået ud af skolen<br />Syddjurs vejleder</asp:ListItem> 
modification petit peu

peut être nécessaire pour finaliser l'accent sur it..major sélectionnés attribut

+0

d'accord, je vais essayer. Cependant, je voudrais une meilleure solution côté serveur. –

+0

Je ne pense pas que cela fonctionne. Êtes-vous sûr que javascript fonctionne dans cet attribut? –

Questions connexes