将XML加载到checkboxlist(vb.net)的重复项

时间:2012-01-11 17:37:04

标签: asp.net xml vb.net data-binding checkboxlist

您好我正在尝试加载XML文档并填充一些复选框列表。我使用DataTextField如下所示。

    <asp:CheckBoxList ID="cblcountry" runat="server" DataTextField="CountryofBirth">

在后面的代码中,我使用下面的代码。

    Dim dSet As New DataSet
    dSet.ReadXml(Server.MapPath("xsource.xml"))
    cblcountry.DataSource = dSet
    cblcountry.DataBind()

这是xml doc。

    <pupil>
    <academicYear>2011/2010</academicYear>
    <grade>Kindergarten 1</grade>
    <class>class 1</class>    
    <name>emma</name>
    <admissionDate>01/05/2010</admissionDate>
    <CountryofBirth>United Kingdom</CountryofBirth>
    <fullName>emma watson</fullName>
    </pupil>

它加载一切都很好。但它有重复的项目。例如,如果CountryofBirth有5个人是英国,则复选框列表显示5次。如果我从1块XML中删除CountryofBirth,它仍会显示一个空白的checkboxitem。

所以我的问题是如何在没有显示重复数据的情况下获取复选框列表。我正在开发一个原型(工作演示),所以最简单的方法会更受欢迎。

非常感谢你们。我喜欢这个论坛。

1 个答案:

答案 0 :(得分:1)

下拉列表将为XML文档中的每个Puplil元素添加一个列表项。您应首先将XML(或数据集)过滤到不同的国家/地区列表,然后绑定到下拉列表控件。

使用Linq编辑示例:

首先,从Aspx页面中删除DataTextField =“CountryofBirth”。

其次...

    Dim dSet As New DataSet
    dSet.ReadXml(Server.MapPath("xsource.xml"))

    Dim lstCountries As List(Of String) = (From dr As DataRow In ds.Tables(0).Rows _
                                           Select CStr(dr.Item("CountryofBirth"))).Distinct.ToList()

    cblcountry.DataSource = lstCountries
    cblcountry.DataBind()