我在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>
答案 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;