我的网格视图中有一个客户端ID列,我宁愿保持隐藏或不可编辑。
当gridview的行正在更新时,我想检查字段的值是否被更改为某个值,以便我可以在我的数据库中设置时间戳。
这是我的功能的副本。
protected void gridStock_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
String anotherUpdatedItem = e.NewValues[8].ToString();
string oldValue = e.OldValues[7].ToString();
string idValue = gridStock.DataKeys[0].Values["StockID"].ToString();
anotherUpdatedItem.ToString();
if (anotherUpdatedItem == "True" && oldValue != "True")
{
string date = DateTime.Today.ToString();
String str = "UPDATE Stock SET [DateSold]=@todaysDate WHERE StockID=@id";
SqlCommand xp = new SqlCommand(str, vid);
xp.Parameters.Add("@todaysDate", SqlDbType.Date).Value = date;
xp.Parameters.Add("@id", SqlDbType.Int).Value = idValue;
vid.Open();
xp.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = xp;
DataSet ds = new DataSet();
da.Fill(ds, "ClientID");
vid.Close();
}
}
正如您所看到的,我已经将数据键添加到gridview,这也可以,但它只检索索引0点。我需要获取已被单击的行的stockid值,以便能够通过我的sql查询传递它。
有人可以帮忙吗?
答案 0 :(得分:1)
您应该使用当前行的索引获取Datakey值。您可以使用e.RowIndex
来实现此目的。这就是你需要的:
string idValue = gridStock.DataKeys[e.RowIndex].Values["StockID"].ToString();
答案 1 :(得分:0)
要使此方法有效,您需要使用所选行的索引。
string idValue = gridStock.DataKeys[gridStock.SelectedIndex].Values["StockID"].ToString();