2012-01-11 82 views
0

您好我正在嘗試加載XML文檔並填充幾個checkboxlist。我使用如下的DataTextField。將XML複製到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次。如果我從1個XML塊中刪除了CountryofBirth,它仍然顯示一個空白的複選框項目。

所以我的問題是如何獲得checkboxlist而不顯示這些重複的數據。我只是在開發一個原型(工作演示),所以最簡單的方法將更受讚賞。

非常感謝這麼多人。我喜歡這個論壇。

回答

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

那麼,如何做呢?你的意思是像LINQ可以完成這項工作嗎?我試圖查詢數據表之前,但不是數據集。我不認爲我可以將Xml導入到數據表中。一些例子將非常感謝。我是一名初學者。謝謝。 – lawphotog 2012-01-12 14:30:50

+0

非常感謝NoAlias,這絕對是太棒了。我喜歡Linq給出的靈活性。特別是在像我這樣的組織中,數據庫和業務邏輯受到非常繁忙的數據庫管理員的控制。但我仍然不能編寫像上面那樣的高級Linq查詢。 – lawphotog 2012-01-13 10:12:09

+0

很高興聽到。我也喜歡Linq,特別是在不寫循環的情況下獲取數據子集。 – N0Alias 2012-01-13 14:17:53

相關問題