你能在asp C#中填充一个预填充的下拉列表吗?

本文关键字:填充 一个 下拉列表 asp | 更新日期: 2023-09-27 18:33:36

截至目前,我有一个 ddl,我已经用表中的信息填充了它。它是设置为自动回发的客户列表。我遇到的问题是,默认选择始终是列表中的第一个客户,当您单击一个客户时,会回发并获取所需的所有信息,并将选择设置为第一个客户并且不回发。

因此,我已经想到并一直在尝试实现的修复方法是在ddl中放置一个空值,类似于"请选择客户"。我已经进入了 DDL 编辑项目并添加了它,但对表的调用不包括它。有没有办法把它包括在内。

使用Mozilla Firefox,我不会遇到这个问题,因为在回发后它停留在同一客户身上。如果我能清除任何内容,我会尽力而为,如果有任何代码段可能有用,我可以提供

//save the value of the current selection to reselect later if still exists
string origSelectedItem = ddlSelectedCustomer.SelectedValue;
//clear and refill the list
ddlSelectedCustomer.Items.Clear();
//check what role the user is in
string usersRole = Roles.GetRolesForUser(Membership.GetUser().UserName)[0];
MembershipUser user = Membership.GetUser();
switch (usersRole)
{
    case "SalesRep":
         ddlSelectedCustomer.DataSource = 
         DAL.Util.getSalesRepCustomers((Guid)user.ProviderUserKey);
         ddlSelectedCustomer.DataBind();
         break;
    case "BasicUser":
    case "Customer":
         ddlSelectedCustomer.DataSource = 
         DAL.Util.getCustomersListForUser((Guid)user.ProviderUserKey);
         ddlSelectedCustomer.DataBind();
         break;
    case "Admin":
    case "SuperAdmin":
         ddlSelectedCustomer.DataSource = DAL.Util.getAllCustomersList(); 
         ddlSelectedCustomer.DataBind();
         break;
    default:
         break;
}
//if user had a company selected, reselect it if it exists
if (origSelectedItem != string.Empty)
    ddlSelectedCustomer.SelectedValue = origSelectedItem;
else if (ddlSelectedCustomer.Items.Count == 1)    
    //if only one item in the list, select it
    ddlSelectedCustomer.Items[0].Selected = true;

此外,这位于网站母版页上的代码隐藏中。

谢谢

你能在asp C#中填充一个预填充的下拉列表吗?

您需要将AppendDataBoundItems设置为 true,然后可以添加一个空的第一项。

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="" Value="" /> <!-- empty first item -->    
</asp:DropDownList>

请务必注意,如果多次绑定列表,则需要清除列表,以便它不会追加重复项。

如果要在代码隐藏中添加空项,在清除列表后,可以这样做:

DropDownList1.Items.Clear();
DropDownList1.Items.Add(new ListItem(string.Empty, string.Empty));
//bind list
我知道

这个问题已经存在,但还有一个替代方案,可以在不接触 aspx 的情况下将其添加到代码隐藏中: 使用您的变量:

ddlSelectedCustomer.Items.Insert(0, new ListItem("Please Select"));

这将添加"请选择"作为您的 DDL 中的第一项