2013-08-30 59 views
1

我想用LINQ閱讀XML,但我有問題。這是我第一次使用LINQ。我想讀取xml並創建一個數據表,然後將數據表綁定到gridview。如何閱讀與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);     
     } 

當我運行該程序,它沒有做任何事情。 gridview是空的。我究竟做錯了什麼?

+7

你綁定的數據表到GridView? –

+1

如果你做了'DataBind',向我們展示GridView的標記代碼。 – xanatos

+0

我會試着將datatable的列名設置爲'id,turkce,english'。 – I4V

回答

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. 
+1

如果文件名會是問題,那麼會出現xml加載錯誤,或者至少網格中不會有四個空行 –

+0

然後只綁定網格會是問題,因爲我已經測試了演示應用程序中的代碼,並且在數據表和網格視圖中也獲得了正確的數據。 – Shreya

+0

但這正是@xanatos發佈的答案。這個答案沒有被接受。 –