获取隐藏的网格视图列,选定行上的单元格值c#

时间:2015-04-16 19:31:18

标签: c# sql asp.net gridview

我的网格视图中有一个客户端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查询传递它。

有人可以帮忙吗?

2 个答案:

答案 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();