дублирующиеся элементы, загружающие XML в контрольный список (vb.net) - PullRequest
0 голосов
/ 11 января 2012

Привет, я пытаюсь загрузить документ 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-документ.

    <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 является Соединенным Королевством, то флажок показывает это 5 раз.Если я удаляю CountryofBirth из 1 блока XML, он по-прежнему показывает пустой флажок.

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

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

1 Ответ

1 голос
/ 11 января 2012

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

Edit w / 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()
...