【问题标题】:Update a database table Column to current date based on GridView Cell value changed根据更改的 GridView 单元格值将数据库表列更新为当前日期
【发布时间】:2021-07-01 03:41:32
【问题描述】:

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

{
    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");                
}

如果Location1 的值已修改,我需要将数据库表列UpdatedLoc1 更新为当前日期,如果Location2 的值已修改,我需要将UpdatedLoc2 列更新。

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

【问题讨论】:

    标签: c# asp.net sql-server


    【解决方案1】:

    靠近你做的地方

    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_

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多