1

我正在尝试使用 LINQ 读取 XML,但遇到了问题。这是我第一次使用 LINQ。我想读取xml并创建一个数据表,然后将数据表绑定到gridview。

这是我的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();

请注意,您需要使用准确的URL来加载我在上面所做的XML文件。您还需要将数据表绑定到 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 回答