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

Get a hidden grid view column, cell value on a selected row c#

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

有人能帮忙吗?

要使此方法起作用,您需要使用所选行的索引。

string idValue = gridStock.DataKeys[gridStock.SelectedIndex].Values["StockID"].ToString();

您应该使用当前行的索引获取 Datakey 值。为此,您可以使用 e.RowIndex。这是您需要的:

string idValue = gridStock.DataKeys[e.RowIndex].Values["StockID"].ToString();