从 DataTable/DataSet 中的搜索创建 DataRow

Posted

技术标签:

【中文标题】从 DataTable/DataSet 中的搜索创建 DataRow【英文标题】:Creating a DataRow from a search in a DataTable/DataSet 【发布时间】:2012-06-08 18:33:30 【问题描述】:

我在这个数据库访问方面取得了进展...... 这是我需要做的: 我有一个在类命名空间中定义的现有 DataSet(因此是一个 DataTable),我正在尝试创建一个允许用户从项目列表中选择的函数,并使用 SelectedItem.Value( 它包含一个唯一的数据库中的主键)以显示有关所选项目的更多信息。我相信我需要搜索 DataSet 并将其读入类似 DataRow 的内容,以便我可以显示其中的值(有一种方法可以根据列名执行此操作,对吗?)

我只是不知道怎么说“复制/选择主键“partnumber”等于SelectedItem.Value的行”

【问题讨论】:

你看过'DataTable.Select()'吗:msdn.microsoft.com/en-us/library/h71xaeh0.aspx 我有DataRow[] myRows = queryTable.Select("productsid='" + selectionList.SelectedItem.Value + "'");,但它返回一个错误,提示找不到列 [prodcutsid],即使这显然是列名之一(除非在这种情况下区分大小写) 【参考方案1】:

常用的方法有3种

    使用DataRowCollection.Find 只能在列已定义为主键时使用

    var row = table.Rows.Find(SelectedItem.Value)
    

    使用DataTable.Select(String),它使用像字符串一样的过滤器

    var rows = table.Select("IdFieldSelectedItem.Value = " + SelectedItem.Value);
    var row = rows[0];
    

    使用Linq to Dataset

    var row =  (from t in table.AsEnumerable()
                where t.Field<int>("Id") == SelectedItem.Value
                select t).First();
    

【讨论】:

@Conrad Frix 好的,所以我正确地使用了 Select 方法。但是,我的 DataSet 似乎不包含任何数据。任何想法为什么?我有public partial class Default : System.Web.UI.Page DataSet queryData = new DataSet(); DataTable queryTable = new DataTable(); 然后在按钮事件处理程序中,我查询数据库(实际上是一个Web 服务),如:protected void updateTable(oject sender, EventArgs e) queryData = pws.Query...//web service method queryTable = queryData.Tables["parts"] 然后这个函数protected void updateData(object sender, EventArgs e) // as shown in your answer 你什么时候调用 .Select() 也是来自填充数据集的按钮处理程序? 不,.Select() 是从下拉列表的“selectedIndexChanged”处理程序中调用的。我正在显示一个表格,然后希望用户在表格启动后从下拉列表中进行选择。从下拉列表中选择一个项目后,我希望显示更多信息。 好的,所以每次您回帖时,queryDataqueryTable 都会重新初始化。为了使 DataSet 保持活动状态,您需要做一些事情。通常人们为此使用Session。例如,将Session["QueryTable"] = queryTable; 添加到您的按钮处理程序,将if(IsPostBack) queryTable = (DataTable)Session["QueryTable"]; 添加到您的页面加载。见Persist c# objects across postbacks 太棒了!这解决了我的问题。我想我终于开始理解所有这些数据和绑定的东西了! :-)

以上是关于从 DataTable/DataSet 中的搜索创建 DataRow的主要内容,如果未能解决你的问题,请参考以下文章

C# DataSet与DataTable的区别和用法

DataTable 和 DataSet 现在应该过时了吗?

datatable dataset

C#里的DataSet到底是干啥用的,怎么用?哪位高手帮我讲解讲解,谢谢啦!

DataTable是啥

Json与DataSet转化