C# 无法将ID绑定到使用SQLDataReader生成的表的按钮
我一直无法解决这个问题。我使用C# 无法将ID绑定到使用SQLDataReader生成的表的按钮,c#,asp.net,C#,Asp.net,我一直无法解决这个问题。我使用SqlDataReader将数据库中的数据生成网格视图。我一直在尝试在每一行上生成按钮,我想用它来更新数据库 我无法从表中获取任何要附加到按钮的值。我希望绑定ID,但我尝试的方法都不管用 以下是我的原始数据绑定查询代码: using (SqlConnection con = new SqlConnection(constr)) { con.Open(); SqlCommand cmd = new SqlCommand("SELECT ID, Wid
SqlDataReader
将数据库中的数据生成网格视图。我一直在尝试在每一行上生成按钮,我想用它来更新数据库
我无法从表中获取任何要附加到按钮的值。我希望绑定ID,但我尝试的方法都不管用
以下是我的原始数据绑定查询代码:
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT ID, Width, Length, DockID from Slip where ID not in (select slipID from lease) and dockID = @dockId", con);
cmd.Parameters.AddWithValue("@dockId", dockId);
SqlDataReader dr = cmd.ExecuteReader();
gridView.DataSource = dr;
gridView.DataBind();
con.Close();
}
这是我试图在每一列上生成按钮的尝试,它可以工作,但是我无法从表中获取任何值来绑定到按钮
foreach (TableRow row in gvAvailableLeaseSlips.Rows)
{
TableCell btnCell = new TableCell();
Button btn = new Button();
btn.Text = "Lease Slip";
btn.CssClass = "btn";
btn.Click += new EventHandler(BtnLease_Click);
btnCell.Controls.Add(btn);
row.Cells.Add(btnCell);
}
事情不是这样的
GridView
有一个DataKeys属性,该属性应在标记中设置为“ID”。然后在按钮的单击事件处理程序中(根据您的描述,它似乎出现在每一行中),您应该查找相应的DataRow
,并请求其DataKey
,它将以您的ID作为对象。您不能像这样从datareader绑定网格。像这样更改代码
DataTable dt = new DataTable();
dt.Columns.Add("dockId");
dt.Columns.Add("width");
dt.Columns.Add("length");
while (obj_Reader.Read())
{
DataRow row = dt.NewRow();
row["dockId"] = obj_Reader["dockId"];
row["width"] = obj_Reader["width"];
row["lenght"] = obj_Reader["LName"];
dt.Rows.Add(row);
}
gridView.DataSource = dt;
或者可以使用数据集填充gridview
此外,在gridview中,您可以使用“自动生成编辑”按钮更新值
在gridview属性中添加AutoGnerateEditButton=true为gridview设置Datakeys属性后,它将是:
int rowIndex = gvAvailableLeaseSlips.RowIndex;
int ID = (int)gvAvailableLeaseSlips.DataKeys[rowIndex]["yourKey"];
注:我在ASP.NET上工作已经很多年了,具体细节可能略有不同,但过程应该和我写的一样。这对我帮助很大。谢谢你。