1

LINQ で XML を読み取ろうとしていますが、問題が発生しています。LINQ を使用するのはこれが初めてです。私はxmlを読んでデータテーブルを作成し、データテーブルをグリッドビューにバインドしたいと考えています。

ここに私のxmlがあります

<?xml version="1.0" encoding="utf-8" ?>
<controls>
  <control id="10001" turkce="türkçe1" english="english1" />
  <control id="10002" turkce="türkçe2" english="english2" />
  <control id="10003" turkce="türkçe3" english="english3" />
  <control id="10004" turkce="türkçe4" english="english4" />
</controls>

ここに私のC#コードがあります

        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("Türkçe");
        dt.Columns.Add("English");

        //Load xml
        XDocument xdoc = XDocument.Load("Language.xml");

        //Run query
        var lv1s = from lv1 in xdoc.Descendants("control")
                   select new
                   {
                       id = lv1.Attribute("id").Value,
                       turkce = lv1.Attribute("turkce").Value,
                       english = lv1.Attribute("english").Value
                   };
        foreach (var lv1 in lv1s) {
            dt.Rows.Add(lv1.id,lv1.turkce,lv1.english);                
        }

プログラムを実行しても、何もしません。グリッドビューは空です。私は何を間違っていますか?

4

1 に答える 1

1
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Türkçe");
dt.Columns.Add("English");

//Load xml

    XDocument xdoc = XDocument.Load("E:/MyApps/TestDemo/Language.xml");

    //Run query
    var lv1s = from lv1 in xdoc.Descendants("control")
               select new
               {
                   id = lv1.Attribute("id").Value,
                   turkce = lv1.Attribute("turkce").Value,
                   english = lv1.Attribute("english").Value
               };
    foreach (var lv1 in lv1s)
    {
        dt.Rows.Add(lv1.id, lv1.turkce, lv1.english);
    }
    gv.DataSource = dt;
    gv.DataBind();

上記で行ったXMLファイルを読み込むには、正確なURLを使用する必要があることに注意してください。また、データ テーブルを GridView にバインドする必要があります。以下は私のGridViewコードです:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" Width="300px">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderID" Text="ID"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblID" runat="server" Text='<% #Eval("ID") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField>
              <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderTürkçe" Text="Türkçe"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblTürkçe" runat="server" Text='<% #Eval("Türkçe") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField>
              <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderEnglish" Text="English"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblEnglish" runat="server" Text='<% #Eval("English") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

My grid view is displaying properly.
于 2013-08-30T10:10:51.957 に答える