我创建了一个带有下拉列表的员工注册页面。它用于为每个用户选择优先级。假设我想在此时编辑一些用户详细信息,请使用以下代码选择下拉列表。它返回带有第一个索引的重复值。这意味着用户具有第三优先级意味着它选择第三优先级而没有第一优先级。
foreach (DataRow dr in DS.Rows)
{
txtemail.Enabled = false;
pan_addEdit.Visible = true;
this.btnSave.Text = "Update";
lbluserid.Text = Convert.ToString(dr["fdluserId"]);
txtuername.Text = Convert.ToString(dr["flduser"]);
txtPass.Text = Convert.ToString(dr["fldpass"]);
txtemail.Text = Convert.ToString(dr["fldemail"]);
ddlstatus.SelectedValue = Convert.ToString(dr["fldstatus"]);
ddlusergroup.SelectedValue = Convert.ToString(dr["fldgroupId"]);
ddldept.SelectedValue = Convert.ToString(dr["flddept"]);
ddlperiority.SelectedValue = Convert.ToString(dr["fldperiority"]);
}
下拉列表在绑定后显示以下值
1st priority
2nd priority
3rd priority
下拉列表在绑定后显示以下值
3rd priority
2nd priority
3rd priority
请帮我修复此错误..
答案 0 :(得分:2)
您不想更改所选项目的Text
。您想要更改选择本身。因此,您可以使用DropdownList的SelectedIndex
或SelectedValue
属性。
ddlperiority.SelectedValue = Convert.ToString(dr["fldperiority"]);
当然必须有一个与dr["fldperiority"]
匹配的值。也许这是文本字段,您需要PK / FK字段。
答案 1 :(得分:1)
您可以使用FindByValue方法在DropDownList中搜索值与参数匹配的Item。
ddlperiority.ClearSelection();
ddlperiority.Items.FindByValue(dr["fldperiority"].ToString()).Selected = true;
或者,您可以使用FindByText方法在DropDownList中搜索与参数匹配的文章。
在使用FindByValue方法之前,不要忘记重置DropDownList,以便使用ClearSelection()方法不选择任何项目。它清除列表选择并将所有项的Selected属性设置为false。否则您将获得以下异常。
"Cannot have multiple items selected in a DropDownList"
答案 2 :(得分:0)
请按照下面的说法
ddlstatus.Items.Clear();
ddlperiority.Items.Clear();
ddlusergroup.Items.Clear();
ddldept.Items.Clear();
foreach (DataRow dr in DS.Rows)
{
txtemail.Enabled = false;
pan_addEdit.Visible = true;
this.btnSave.Text = "Update";
lbluserid.Text = Convert.ToString(dr["fdluserId"]);
txtuername.Text = Convert.ToString(dr["flduser"]);
txtPass.Text = Convert.ToString(dr["fldpass"]);
txtemail.Text = Convert.ToString(dr["fldemail"]);
ddlstatus.Items.Add ( Convert.ToString(dr["fldstatus"]));
ddlusergroup.Items.Add( Convert.ToString(dr["fldgroupId"]));
ddldept.Items.Add( Convert.ToString(dr["flddept"]));
ddlperiority.Items.Add( Convert.ToString(dr["fldperiority"]));
}
答案 3 :(得分:0)
如果上面的答案仍然不适合你,请尝试这样的事情
var item = Convert.ToString(dr["fldperiority"]);
switch(item)
{
case "1st priority":
ddlperiority.SelectedIndex = 0;
break;
case "2nd priority":
ddlperiority.SelectedIndex = 1;
break;
case "3rd priority":
ddlperiority.SelectedIndex = 2;
break;
}