基于数据集中的行值填充DataTable

本文关键字:填充 DataTable 集中 于数据 数据 | 更新日期: 2023-09-27 18:19:58

我想在网站的首页上显示一些新闻帖子。新闻有不同的类别,但存储在同一个mysql数据库中。所有新闻项目都加载到一个数据集中,但我只想从中提取一些特定的新闻,并在ListView控件中显示它们。

目前,我正在使用一种变通解决方案,即在数据集上使用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"] = ???

然后它就停止了。如何用其他数据表中的行填充新数据表,其中列的值为x?

-孙。

基于数据集中的行值填充DataTable

您应该考虑将ListView绑定到DataView,它是可筛选和排序的。

您可以使用repeater、datalist等控件设计web表单,并可以将这些控件绑定到codeehind上的数据表。

示例可在此处找到