2012-06-08 111 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()'也是來自填充數據集的按鈕處理程序? –