【问题标题】:DataBound CheckBoxList数据绑定复选框列表
【发布时间】:2009-09-22 06:15:47
【问题描述】:

我有一个用 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。因此我可以说 (byte)Eval("Type")。

但是如何将我的 Eval("Type") 数据绑定到 CheckBoxList,如果 Eval("Type") 为 3,那么最后两个项目被选中?

我尝试设置一个绑定到 Type 的隐藏值,然后在 CheckBoxList OnLoad 中设置所选项目。但这没有用。

【问题讨论】:

    标签: asp.net data-binding listview checkboxlist


    【解决方案1】:

    就是这样做的,隐藏值绑定到Type,但是在ListView的ItemDataBound事件上。

    所以事件看起来像这样:

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

    (这些都是我脑子里写的,可能会有一些小错误)

    【讨论】:

    • 我会调查一下 :) 但它仅适用于 EditItem 有一个复选框列表。并非所有项目。
    • 您可以只为 EditItem 放置 HiddenField。然后在大括号中进行所有检查/选择: if (hdfType != null) { ... }
    【解决方案2】:

    首先你应该写一个像这样的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> 
    

    可能需要一点点修改才能完成它。主要关注 Selected 属性

    【讨论】:

    • 好的,我会试试的。不过,我想要一个更好的服务器端解决方案。
    • 我认为它不起作用。您确定 javascript 在该属性中有效吗?
    猜你喜欢
    • 1970-01-01
    • 2017-04-14
    • 2018-01-03
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多