使用LINQ SPROC结果填充ListView

时间:2014-02-25 20:51:32

标签: c# linq listview stored-procedures linq-to-sql

我正在使用C#开发桌面应用程序。我正在使用LINQ从存储过程中恢复数据库中的数据。我执行下一个查询:

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

此查询从我的应用程序接收参数并返回一条我想在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
        }
    }

2 个答案:

答案 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);
            }

答案 1 :(得分: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