2012-01-09 71 views
1

我想在網站的首頁上顯示一些新聞帖子。新聞有不同的類別,但存儲在同一個mysql數據庫中。所有的新聞都加載到數據集中,但是我只想提取一些特定的新聞並在ListView控件中顯示它們。根據數據集中的行值填充DataTable

目前,我正在使用在數據集上使用foreach循環的解決方案,並在後面的代碼中使用html格式化結果。它的工作原理,但我希望所有的HTML格式都在aspx文件中完成,因此我正在尋找更好的解決方案。

 DataSet articles = db.loadAllArticles(); 
     foreach (DataRow item in articles.Tables["articles"].Select("category = 1")) 
     { 
      result += "<h1 class='headline'>" + item["headline"] + "</h1><h2 class='introduction'>" + item["introduction"] + "</h2><p class='content'>" + item["content"] + "</p><p class='authorAndDate'>" + item["author"] + " " + item["datePosted"].ToString().Substring(0,10) + "</p><br/>";     
     } 
     lblDisplay.Text = result; 

我希望我可以做的只是這樣的:

DataSet articles = db.loadAllArticles(); 
ListView1.DataSource = articles.Tables["articles"].Select("category = 1"); 
ListView1.DataBind(); 

但ListView控件是不是太高興努力的DataRow綁定到它什麼。 我能想到的最好的解決方法是將含有所選類別的唯一物品的「物品」 DataSet中創建一個新的表,所以這樣的事情:

DataSet articles = db.loadAllArticles(); 
articles.Tables.Add("frontPageArticles"); 
articles.Tables["frontPageArticles"] = ??? 

然後多數民衆贊成在它停止。我怎樣才能填充新的數據表中的行與其他數據表中的行的值是X?

-Eric。

回答

2

您應該查看綁定ListView到DataView,它是可過濾和排序的。

+0

謝謝,像一個魅力工作。我的解決方案(對於將來遇到類似問題的人): DataSet articles = db.loadAllArticles(); DataView frontPageArticles = new DataView(articles.Tables [「articles」]); frontPageArticles.RowFilter =「category = 1」; ListView1.DataSource = frontPageArticles; ListView1.DataBind(); – ardal 2012-01-09 13:02:13

-1

您可以使用中繼器,數據等控件來設計您的web表單,並可以將這些控件綁定到代碼隱藏的數據表上。

可以找到一個例子here