2012-01-11 2 views
0

Привет, Я пытаюсь загрузить XML-документ и заполнить несколько checkboxlist. Я использую DataTextField, как показано ниже.duplicate items loading XML to checkboxlist (vb.net)

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

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

Он загружает все в порядке. Но у него есть дублированные предметы. Например, если 5 человек с CountryofBirth - это Великобритания, а checkboxlist показывают это 5 раз. Если я удалю CountryFBirth из 1 блока XML, он по-прежнему показывает пустой checkboxitem.

Так что мой вопрос: как я могу получить checkboxlist, не показывая эти дублированные данные. Я просто разрабатываю прототип (рабочую демонстрацию), поэтому самый простой способ был бы более оценен.

Большое спасибо, ребята. Мне нравится этот форум.

ответ

1

Выпадающий список добавит элемент списка для каждого элемента Puplil в документе XML. Сначала вы должны фильтровать XML (или набор данных) в отдельный список стран, а затем привязать к выпадающему списку.

Редактировать ж/Linq Пример:

Сначала удалите DataTextField = "CountryofBirth" из вашей страницы ASPX.

Второй ...

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() 
+0

Итак, как я могу это сделать? вы имеете в виду что-то вроде LINQ, которое может выполнить эту работу? Я пытался запросить данные, относящиеся к данным, но не к набору данных. Я не думаю, что могу импортировать Xml в datatable. немного примера было бы очень оценено. Я начинающий. Благодарю. – lawphotog

+0

Большое спасибо NoAlias, это абсолютно фантастично. Мне нравится гибкость, предоставляемая Linq. Особенно в таких организациях, как мои, что базы данных и бизнес-логика контролируются чрезвычайно загруженными администраторами баз данных. Но я все еще не могу написать расширенный запрос Linq, такой как выше. – lawphotog

+0

Приятно слышать. Я тоже люблю Linq, особенно для получения подмножества данных без написания цикла. – N0Alias