我正在使用动态文本框和下拉控件创建一个html表。我正在从db表中获取基于行,列和单元格的一个下拉项目文本。我有一个带有员工列表的gridview。当我点击第一个员工时,数据在下拉列表和文本框中正确填充。但是,当我第二次点击其他员工时,文本框数据会填充而不会下拉。下拉保留旧值,而不是选择实际值。帮助表示赞赏。请检查下面的代码。
DropDownList ddl = CreateDropdownList(appraisalsecid, titleid, k, l);
string objvalue = "";
var obj1 = dsempvalues.Tables[0].AsEnumerable().Where(x => x.Field<int>("SectionId") == appraisalsecid && (x.Field<int>("TitleId") == titleid) && (x.Field<int>("RowId") == k && (x.Field<int>("CellId") == l)));
foreach (var dr in obj1)
objvalue = dr["appraisalvalue"].ToString();
if (!string.IsNullOrEmpty(objvalue))
{
if (ddl.Items.Count > 0)
{
if (ddl.Items.Contains(ddl.Items.FindByText(objvalue)))
{
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(objvalue));
}
}
}
if (appraislsubmit)
ddl.Enabled = false;// this is make probledm
tc.Controls.Add(ddl);
tc.Width = "100";
tr.Cells.Add(tc);
allddl.Add(ddl.ID);
public DropDownList CreateDropdownList(int i, int j, int k, int l)
{
DropDownList ddl = new DropDownList();
try
{
ddl.ID = "ddl" + "_" + i.ToString() + "_" + j.ToString() + "_" + k.ToString() + "_" + l.ToString();
ddl.CssClass = "select2-chosen";
ddl.ViewStateMode = ViewStateMode.Enabled;
DataSet ds = new DataSet();
ds = Session["DSDll"] as DataSet;
ddl.DataSource = ds;
ddl.DataTextField = "Name";
ddl.DataValueField = "ID";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("---select----", "0"));
return ddl;
}
catch (Exception ex)
{
}
return ddl;
}
我发现了一些问题。但我不知道为什么会发生这种情况。如果ddl禁用,则下拉不清除。如果能够很好地运作它。
答案 0 :(得分:1)
如果要禁用任何下拉列表,则只需要将所需的值绑定到它。
另一种方法是,您可以绑定整个列表,然后在要禁用它时删除其他列表。