2011-05-20 62 views
0

我加载的数据从数据表到DataGridView中看起来是这样的:运行时在数据Gridview行单元中显示结果?

SerialNumber1 | Quantity | Issued Quantity | Status | 
    00001  |  1 |     |   | 
    00002  |  2 |     |   | 

我有这样的要求,这让我卡住了。

我需要查询数据数据网格视图记录来验证加载的序列号是否与实际相同。 (也许使用LINQ - 纠正我,如果我不正确)

例:

var dgviewData = from a in gdview1.AsEnumerable() 
       where a<string>("SerialNumber").tostring() == txtserial.text 
       select a; 

if(a.Count() > 0) 
{ 
    // Update Status of SerialNumber 00001 to Ok 
} 
else 
{ 
    //Error Serial Not Exist on Gridview 
} 

如果DGview SerialNumbers是扫描的实际序列相同,状态会在运行时更新datagridview的行只有细胞。

如:DGview串行= 00001 --->单位实际扫描中问候= 00001

SerialNumber1 | Quantity | Issued Quantity | Status | 
    00001  |  1 |  1  | Ok | 
    00002  |  2 |     |   | 

感谢....

+0

你的意思是写入数据库,然后更新DGview? – soandos 2011-05-20 07:50:12

+0

..我只需要更新datagridview行单元格...请参阅我的更新后的帖子.. – BizApps 2011-05-20 08:29:38

回答

0

你的LINQ查询是有点过,得到的匹配行,你应该做的:

string scannedNumber = txtserial.text; 
var matchedRows = this.gdview1.Rows 
    .Cast<DataGridViewRow>() 
    .Where(r => scannedNumber.Equals(r.Cells[0].Value)); 

然后更新 “发行量”(细胞在指数= 2)简单地做:

foreach (var row in matchedRows) 
{ 
    row.Cells[2].Value = 1; 
} 

除非您想增加该数字,否则使用Int32.Parse/.TryParse

+0

感谢它的工作原理... – BizApps 2011-05-25 01:20:56

0

从我能理解,我认为你需要添加一个定时器的形式和定时器的事件自动检查数据库在gridview中的现有数据的任何updations ...

0

让我们假设在某个事件,你会得到被扫描的序列号。因此,只要找到序列号,请循环访问DataGrid,并检查网格视图中的第一列是否与扫描的列相同,如果是,则更新当前记录。

那你究竟坚持哪个部分?循环记录?

相关问题