DataBound CheckBoxList - PullRequest
       18

DataBound CheckBoxList

1 голос
/ 22 сентября 2009

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

В моем 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>

У меня есть столбец с именем Type в моей базе данных, и это tinyint. Поэтому я могу сказать (байт) Eval («Тип»).

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

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

Ответы [ 2 ]

3 голосов
/ 23 сентября 2009

Это способ сделать это с привязкой скрытого значения к типу, но с событием 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 голосов
/ 22 сентября 2009

Сначала вы должны написать такую ​​функцию javascript, как это

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> 

Для его завершения может потребоваться небольшая модификация. Основное внимание уделено Выбранный атрибут

...