我将数据从Datatable加载到DatagridView,如下所示:
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 serial = 00001 ---&gt;实际单位扫描= 00001
SerialNumber1 | Quantity | Issued Quantity | Status |
00001 | 1 | 1 | Ok |
00002 | 2 | | |
谢谢你们......
答案 0 :(得分:0)
根据我的理解,我认为您需要在表单中添加一个计时器,并且在计时器事件中自动检查数据库中gridview中现有数据的任何更新...
答案 1 :(得分:0)
让我们假设在某种情况下,您将获得扫描的序列号。因此,只要找到序列号,就可以遍历DataGrid,并检查网格视图中的第一列是否与扫描的列相同,如果是,则更新当前记录。
那么你真正陷入了哪个部分?循环记录?
答案 2 :(得分: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
。