我有一个CREATE TEMP TABLE tmp_x AS SELECT * FROM "Schema"."Table" LIMIT 0;
copy tmp_x FROM '\\PATH\TO\CSV\FILE.csv' DELIMITER ',' CSV`
来自grid
。
我想要实现的目标是遍历每个datatable
& row
已选择,并将值集存储在变量上,以便我可以更新表格。
因此,例如,循环应以 P1 开头,将值431 /,P1和88.2存储到三个变量中:
column
执行更新:
string sub = '431/'
string code = 'P1'
decimal newbaseprice = 88.2
等等直到P2& P3已更新。
到目前为止,我已经能够从特定行获取值,但我无法确定如何获取列名并将其应用于我的更新。
UPDATE MyPriceTable
SET BasePrice = newbaseprice
WHERE PartNum = sub and ListCode=code
有人有另外一种方法来解决这个问题吗?
答案 0 :(得分:3)
问题是你在网格上是DataBound并想知道如何更新网格后面的数据,然后刷新你的网格。
您的第一个问题是多个选择会导致您在循环中覆盖。这将使所有值等同于最近的迭代,这没有用。我建议创建一个私有嵌套类来处理这个问题。
private class DItem
{
public string sub {get;set;}
public string p1 {get;set;}
public string p2 {get;set;}
public string p3 {get;set;}
}
然后你这样使用它:
var litms = new List<DItem>()
foreach(DataRow row in ((DataTable)this.grdPart.DataSource).Select("Seleccionar= true"))
{
var item = new DItem();
item.sub = row["SUB"].ToString();
item.p1 = row["P1"].ToString();
item.p2 = row["P2"].ToString();
item.p3 = row["P3"].ToString();
litms.Add(item);
}
然后,您可以使用Linq调用您的类列表,并以这种方式分配值,或者(正确的方式)使用值更新DataTable
并重新绑定。您可以使用列名称或它们的indeces,以使名称无关紧要。