2012-01-09 15 views
1

Webサイトのフロントページにいくつかのニュース記事を表示したいとします。ニュースには異なるカテゴリがありますが、同じmysqlデータベースに格納されています。すべてのニュースアイテムはデータセットに読み込まれますが、そこからは特定のニュースを抽出してListViewコントロールで表示したいだけです。DataSetの行の値に基づいて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 articles = db.loadAllArticles(); 
articles.Tables.Add("frontPageArticles"); 
articles.Tables["frontPageArticles"] = ??? 

し、それが停止した場所のthats:私は考えることができる 最善の回避策はのみ選択したカテゴリの記事なので、このようなものが含まれている「記事」のDataSet内に新しい表を作成することです。新しいデータテーブルを、列の値がxである他のデータテーブルの行でどのように満たすことができますか?

-Eric。

答えて

2

リストビューをDataViewにバインドするのは、フィルタリング可能でソート可能です。

+0

ありがとう、魅力的なように働いています。私の解決策(将来同様の問題に遭遇する人向け): DataSet articles = db.loadAllArticles(); DataView frontPageArticles =新しいDataView(articles.Tables ["articles"]); frontPageArticles.RowFilter = "category = 1"; ListView1.DataSource = frontPageArticles; ListView1.DataBind(); – ardal

-1

リピータ、データリストなどのコントロールを使用してWebフォームをデザインし、コードビハインド上のデータテーブルにこれらのコントロールをバインドできます。

例は見つけることができますhere

関連する問題