Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将XML加载到checkboxlist(vb.net)的重复项_Asp.net_Xml_Vb.net_Data Binding_Checkboxlist - Fatal编程技术网

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

Asp.net 将XML加载到checkboxlist(vb.net)的重复项,asp.net,xml,vb.net,data-binding,checkboxlist,Asp.net,Xml,Vb.net,Data Binding,Checkboxlist,嗨,我正在尝试加载XML文档并填充一些复选框列表。我使用DataTextField,如下所示 <asp:CheckBoxList ID="cblcountry" runat="server" DataTextField="CountryofBirth"> 这是xml文档 <pupil> <academicYear>2011/2010</academicYear> <grade>Kindergarten

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

    <asp:CheckBoxList ID="cblcountry" runat="server" DataTextField="CountryofBirth">
这是xml文档

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

2011/2010
第一幼儿园
第一类
艾玛
01/05/2010
大不列颠联合王国
艾玛·沃森
它装的东西都很好。但它有重复的项目。例如,若有5个人的出生国是英国,则复选框列表会显示5次。如果我从一块XML中删除CountryofBirth,它仍然显示一个空白的复选框项

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


非常感谢各位。我喜欢这个论坛。

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

编辑w/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()

那么,我该怎么做呢?你是说像LINQ这样的人能胜任这项工作?我以前尝试过查询数据表,但没有查询到数据集。我认为我也不能将Xml导入datatable。请举个例子,我将不胜感激。我是初学者。谢谢,非常感谢NoAlias,这真是太棒了。我喜欢Linq的灵活性。特别是在像我这样的组织中,数据库和业务逻辑由非常繁忙的数据库管理员控制。但是我仍然不能编写像上面那样的高级Linq查询。很高兴听到。我也喜欢Linq,尤其是在不编写循环的情况下获取数据子集。
    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()