2012-01-11 10 views
0

こんにちは、私はXML文書を読み込み、いくつかのチェックボックスリストを設定しようとしています。私は以下のようにDataTextFieldを使用します。重複している項目をXMLに読み込むcheckboxlist(vb.net)

私はコードを以下に示します。

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> 

すべてが正常にロードされます。しかし、それはアイテムを重複しています。たとえば、CountryofBirthを持つ5人が英国である場合、チェックボックスリストは5回を示します。 XMLの1ブロックからCountryofBirthを削除すると、それでも空白のチェックボックス項目が表示されます。

私の質問は、これらの重複したデータを表示せずにチェックボックスリストを取得する方法です。私はプロトタイプ(作業デモ)を開発していますので、最も簡単な方法はもっと感謝しています。

ありがとうございます。私はこのフォーラムが大好きです。

答えて

1

ドロップダウンリストは、XMLドキュメント内のすべてのPuplil要素のリスト項目を追加します。 XML(またはデータセット)を国の別のリストにフィルタリングしてから、ドロップダウンリストコントロールにバインドする必要があります。 LINQの例/ W

編集:

まず、あなたの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

+0

ありがとうございますNoAlias、これは絶対に素晴らしいです。私はLinqによって与えられた柔軟性が大好きです。特に、私のような組織では、データベースとビジネスロジックは非常に忙しいデータベース管理者によって制御されています。しかし、私はまだ上記のような高度なLinqクエリを書くことはできません。 – lawphotog

+0

よろしくお願いします。私はLinqも愛しています。特に、ループを書くことなくデータのサブセットを取得しています。 – N0Alias

関連する問題