DropdownList未显示所选值

时间:2015-04-25 07:55:34

标签: c# asp.net

我在Repeater中使用了DropDownList。它从数据库中获取名称(管理员,经理,成员)。 用户名显示正确,即使警报显示正确的数据。 但dropdownlist.selecteditem无效。 两个用户都在下拉列表中显示admin作为默认选择值,在db其管理器中显示。

protected void ListRepeaterView_ItemDataBound(object sender, RepeaterItemEventArgs e)
{



    DropDownList selectList = e.Item.FindControl("DropDownList1") as DropDownList;
    selectList.DataSource = ML.SelectAll();
    selectList.DataTextField = "Designation";
    selectList.DataValueField = "EmployeeID";

    selectList.DataBind();


    HiddenField Designation = (HiddenField)e.Item.FindControl("hdnDesignation");
   selectList.SelectedValue = Designation.Value.ToString();
   ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert(" + Designation.Value.ToString() + ");", true);




}

.cs文件

    <asp:Repeater ID="ListRepeaterView" runat="server" OnItemDataBound="ListRepeaterView_ItemDataBound">
<ItemTemplate><tr><td>
<asp:Label ID="EmpName" runat="server" Text='<%# Eval("EmployeeName") %>'></asp:Label>
 asp:HiddenField ID="hdnProductID" Value='<%# Eval("EmployeeID") %>' runat="server" />
</td><td>
<asp:HiddenField ID="hdnDesignation" Value='<%# Eval("Designation") %>' runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" >
 </asp:DropDownList>
</td></tr>
<br /><br /><br />
</ItemTemplate>
</asp:Repeater>

1 个答案:

答案 0 :(得分:3)

您正在使用&#34;指定&#34;作为文本字段和&#34; EmployeeID&#34;作为select中的值字段。然后,您尝试根据&#34;指定&#34;设置所选值。这无法真正发挥作用。

您可以做的是按文字找到默认项目:

// add some error handling for cases when item cannot be found
var defaultText = Designation.Value.ToString();
selectList.Items.FindByText(defaultText).Selected = true;