我有一个用于更新数据库的 gridview。网格视图由三列组成。第一列是 ID 号。第二列是类别 (BU)。最后一列是评论字段。我设置了编辑以允许编辑第二列和第三列。第二列需要有一个下拉列表供用户选择。到目前为止,我做得很好。我的客户为此添加了另一个组,因此需要修改填充下拉列表的查询以查找客户是客户 A 还是客户 B。我将下拉列表基于数据库中的视图。该视图有两列 Cust, BU。我可以从填充 gridview 的原始查询中得到 cust。我试图将其设置为 DataKey,但我不确定如何引用它。
这是gridview中下拉列表的代码。该对象使用 onrowdatabound = "Rowdatabound" 绑定到网格视图
这是后面的rowdatabound代码:
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && gvSummary.EditIndex == e.Row.RowIndex)
{
DropDownList dlBU = (DropDownList)e.Row.FindControl("dlBU");
string query = "select distinct Unit from vw_BU";
SqlCommand cmd = new SqlCommand(query);
dlBU.DataSource = GetData(cmd);
dlBU.DataTextField = "Unit";
dlBU.DataValueField = "Unit";
dlBU.DataBind();
dlBU.Items.FindByValue((e.Row.FindControl("lblBU") as Label).Text).Selected = true;
}
}
lblBU 使得下拉列表将保留原始值(如果有)。我为每个客户在数据库中添加了一个空值,这样如果没有输入值,我就可以避免错误。
所以最终我想要做的是从 vw_BU 中选择不同的单元,其中 cust = "Tim",我会从原始选择语句中的数据键中获取 Tim。
我希望这是有道理的。