2012-06-08 74 views
1

我正在这个数据库访问的东西取得进展... 以下是我需要做的: 我有一个现有的DataSet(因此是一个DataTable)类名称空间,并且我试图创建一个允许用户从项目列表中选择的函数,并使用SelectedItem.Value(其中包含来自数据库的唯一主键)显示有关所选项目的更多信息。我相信我需要通过DataSet进行搜索并将其读入DataRow之类的东西,以便我可以显示这些值(有一种方法可以根据列名进行此操作,是否正确?)从DataTable/DataSet中搜索创建DataRow

我只是可以'牛逼弄清楚如何说“拷贝/选择其主键行‘部分号码’等于SelectedItem.Value

+0

你有没有看 'DataTable.Select()' :http://msdn.microsoft.com/en-us/library/h71xae h0.aspx – CodingGorilla

+0

我有 'DataRow [] myRows = queryTable.Select(“productsid ='”+ selectionList.SelectedItem.Value +“'”);' 但它返回一个错误,说找不到列[prodcutsid]即使这明显是列名之一(除非在这种情况下区分大小写) –

回答

2

常见的有三种方法,如果一列已经

  1. 使用DataRowCollection.Find只能用定义为主键

    var row = table.Rows.Find(SelectedItem.Value) 
    
  2. 使用DataTable.Select(String)它使用的过滤器像一个字符串

    var rows = table.Select("IdFieldSelectedItem.Value = " + SelectedItem.Value); 
    var row = rows[0]; 
    
  3. 使用Linq to Dataset

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

Linq到Dataset的+1 – CodingGorilla

+0

@Conrad Frix好的,所以我正确使用了Select方法。但是,它好像我的DataSet不包含任何数据。任何想法为什么?我有'public public 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 .. ////服务方法 queryTable = queryData.Tables [“parts”]}' 然后这个函数 'protected void updateData(object sender,EventArgs e){//如你的答案所示}' –

+0

你打电话的时候'.Select()'也是来自填充数据集的按钮处理程序? –