我正在研究ASP.NET C#Web应用程序。我有一个DropDownList
用于选择数据绑定machines_names
。还有gridview
显示存储的数据。 Gridview
还包含编辑和删除按钮的templateField
。单击“编辑”按钮时,必须在Web表单中的相应字段上加载相应字段的存储值。问题是当我点击编辑按钮时,ddl中的项目(默认值" - 选择 - ")被当前数据替换。
我希望在单击编辑按钮时在ddl中选择存储的ddl项。 例如,在ddl中有诸如
之类的项目--select--
Roller
Heater
sensor
在网格视图中,我有以下
Repair-id machine
1 roller
2 sensor
因此,当我在网格视图中单击ID 2的编辑按钮时,ddl必须选择第三个项目即传感器而不替换ddl中的顶部项目。
这是我的代码
protected DataTable bindMachineName()
{
DataTable dt = new DataTable();
dc.Company_code = Convert.ToInt32(Session["Company_Code"].ToString());
dt = dpbll.select_machine_name(dc);
ddlMachine.DataSource = dt;
ddlMachine.DataTextField = "machine_name";
ddlMachine.DataValueField = "machine_id";
ddlMachine.DataBind();
ddlMachine.Items.Insert(0, new ListItem("----- Select -----", "-1"));
return dt;
}
protected void btnEdit_Click(object sender, EventArgs e)
{
dc.Company_code = Convert.ToInt32(Session["company_code"].ToString());
Button btn = (Button)sender;
GridViewRow gv = (GridViewRow)btn.NamingContainer;
string repair_id = gv.Cells[0].Text;
ViewState["repair_id"] = repair_id;
ddlMachine.SelectedItem.Text = gv.Cells[1].Text;
}
答案 0 :(得分:1)
没关系我解决了这个问题。
ddlMachine.Items.FindByText(gv.Cells[1].Text
确实完美无缺。
protected void btnEdit_Click(object sender, EventArgs e)
{
dc.Company_code = Convert.ToInt32(Session["company_code"].ToString());
Button btn = (Button)sender;
GridViewRow gv = (GridViewRow)btn.NamingContainer;
string repair_id = gv.Cells[0].Text;
ViewState["repair_id"] = repair_id;
ddlMachine.SelectedIndex=ddlMachine.Items.IndexOf(ddlMachine.Items.FindByText(gv.Cells[1].Text));
}
答案 1 :(得分:0)
问题是当我点击ddl中的编辑按钮项目时(默认值) 值" - 选择 - ")被当前数据替换。
您可能希望将DropDownList
' AppendDataBoundItems
设置为true
。
<asp:DropDownList runat="server" ID="ddlMachine" AppendDataBoundItems="true">
<asp:ListItem Text="----- Select -----" Value="-1" />
</asp:DropDownList>
AppendDataBoundItems
属性允许您添加项目 发生数据绑定之前的ListControl对象。 数据绑定后, items集合包含数据源中的项目和 以前添加的项目。