2009-09-22 3 views
1

У меня есть сайт, запрограммированный в Asp.Net, и используйте ListView для отображения данных. Данные поступают из LinqDataSource.DataBound CheckBoxList

В моей EditItemTemplate У меня есть CheckBoxList, которые состоят из:

<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> 

У меня есть столбец с именем типа в моей БД, и это TINYINT. Поэтому я могу сказать (байт) Eval («Тип»).

Но как мне привязать мой Eval («Type») к CheckBoxList, если Eval («Тип») равен 3, тогда выбраны два последних элемента?

Я попытался установить скрытое значение, которое привязывается к типу, а затем в CheckBoxList OnLoad, задав выбранные элементы. Но это не сработало.

ответ

3

Это способ сделать это, с привязанное к типу значение hidded, но в событии ItemDataBound в ListView.

Так что событие будет выглядеть примерно так:

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; 
} 

(я написал все это из головы, так что могут быть некоторые небольшие ошибки)

+0

Я рассмотрю это :), но это только для EditItem есть checkboxlist. Не все предметы. –

+0

Вы можете поместить HiddenField только для EditItem. А потом делать все проверки/выбора в фигурных скобках после: если (hdfType! = NULL) { ... } –

+0

Он уверен, работает. Большое спасибо! :) –

0

Сначала вы должны написать яваскрипт функцию как этого

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> 

мало-мальский модификации могут потребоваться для завершения it..major внимания на Selected атрибута

+0

хорошо, я попробую это. Тем не менее, я бы хотел, чтобы серверное решение было лучше. –

+0

Я не думаю, что это работает. Вы уверены, что javascript работает в этом атрибуте? –