2014-02-25 31 views
1

我正在用C#開發一個桌面應用程序。我正在使用LINQ從存儲過程中恢復數據庫中的數據。從我的應用程序用LINQ SPROC結果填充ListView

ALTER proc [dbo].[sp_SelectRecords] 
@idproduct nchar(10) 
as 
select Id_Product,Description,Sell_Price from Tbl_Products 
where [email protected] 

此查詢收到參數和返回我,我想上顯示的ListView一個記錄:我執行一個查詢。

linqDataContext _linq = new linq_DataContext(); 
private void txtParam1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == 13) 
     { 
      var res = _linq.sp_SelectRecords(txtParam1.Text); 
      //Here I want to add result of SPROC to ListView 
      listView1.Items.Add(res);//I though that this could work like 'DataGridView.DataSource=res' 
      //But DataGridView display records of query at moment 
      //And I want add records every time that executes a query 
     } 
    } 
+0

告訴我們你做了什麼,如果你不知道檢查以下鏈接教程http://www.codeproject.com/Articles/4012/C-List-View-v1-3 –

+0

編輯我的張貼一部分代碼,我執行SPROC – JuanGD

+0

你會得到任何錯誤或什麼? –

回答

1

感謝您回答'alancnet'!但是,在它旋轉在我的頭上之後,我嘗試了這一點,並且獲得了它!

var res = _linq.sp_SelectRecords(txtParam1.Text); 
      foreach (var order in res) 
      { 
       ListViewItem lvi = new ListViewItem(new[] { order.Cod_Prod, order.Description, order.Price.ToString() }); 
       ListView1.Items.Add(lvi); 
      } 
+0

這將工作:)以爲我會給你一個優雅的LINQ答案。 – wizulus

+0

無論如何...感謝您提供幫助,alancenet! ;) – JuanGD

0

當你添加項目到ListView,它必須是一個字符串,或ListViewItem。如果添加ListViewItem,你其實可以存儲與它的對象引用:

myListView.Items.Add(new ListViewItem(MyObject.Text) 
{ 
    Tag = MyObject 
}); 

使用這種方法,您可以將單個的記錄添加到ListView,因爲我在上面所做的,或添加整個系列記錄是這樣的:

myListView.Items.AddRange(
    (
     items.Select(
      item => new ListViewItem(item.Text) 
      { 
       Tag = item 
      } 
     ) 
    ).ToArray() 
); 

當您要訪問的選擇的對象,您可以檢索像這樣的引用:

myListView.SelectedItems[0].Tag