根据更改的 GridView 单元格值将数据库表列更新为当前日期

MMB

我在加载时将数据集插入缓存

{
    string command = @"SELECT Item, Location1, UpdatedLoc1, Loation2, UpdatedLoc2 FROM Stock";
    SqlDataAdapter sda = new SqlDataAdapter(command, con);
    DataSet ds = new DataSet();
    sda.Fill(ds, "Stock");
    ds.Tables["Stock"].PrimaryKey = new DataColumn[] { ds.Tables["Stock"].Columns["Item"] };
    Cache.Insert("DATASET", ds);
    gvStockItems.DataSource = ds;
    gvStockItems.DataBind();
}

在 GridView 更新事件中,我正在更新缓存

if (Cache["DATASET"] != null)
{
    DataSet ds = (DataSet)Cache["DATASET"];
    DataRow dr = ds.Tables["Stock"].Rows.Find(e.Keys["Item"]);
    dr["Location1"] = e.NewValues["Location1"];
    dr["Location2"] = e.NewValues["Location2"];
    Cache.Insert("DATASET", ds);
    gvStockItems.EditIndex = -1;
    GetDataFromCache();
}

然后使用da.Update()as将数据保存回数据库

using (SqlConnection con = new SqlConnection(cs))
{
    SqlDataAdapter da = new SqlDataAdapter("SELECT Item, Location1, UpdatedLoc1, Loation2, UpdatedLoc2  FROM Stock", con);
    DataSet ds = (DataSet)Cache["DATASET"];
    string UpdateQuery = "UPDATE Stock SET Location1=@Location1, Loation2 =@Loation2 WHERE Item=@Item";
    SqlCommand update = new SqlCommand(UpdateQuery, con);
    update.Parameters.Add("@Item", SqlDbType.VarChar, 50, "Item");
    update.Parameters.Add("@Location1", SqlDbType.Int, 0, "Location1");
    update.Parameters.Add("@Loation2 ", SqlDbType.Int, 0, "Loation2");
    da.UpdateCommand = update;
    da.Update(ds, "Stock");                
}

如果修改的值列的值修改,我需要将数据库表列更新UpdatedLoc1当前日期Location1UpdatedLoc2Location2

如何使用RowState更改方法实现这一点

凯厄斯·贾德

附近你做的位置

dr["Location1"] = e.NewValues["Location1"];

您应该将旧值与新值进行比较,并相应地设置 UpdatedLoc1 日期列。如果在更新 Location1 之前进行检查,则可以比较 DataSet 值和 NewValues 值。如果您在之后执行此操作,您可以向 DataRow 询问原始值和新值以计算是否进行了更改,例如使用dr["Location1", DataRowVersion.Original]- 请参阅https://docs.microsoft.com/en-us/dotnet/api/ system.data.datarow.item?view=net-5.0#System_Data_DataRow_Item_System_String_System_Data_DataRowVersion _

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章