如何为此ASP.NET DropDownList控件添加默认的“选择”选项?

时间:2013-12-20 09:37:48

标签: c# asp.net linq-to-entities

我是一名新的ASP.NET开发人员,我正在尝试学习Linq-To-Entities。我试图将DropDownList绑定到Linq语句,以检索状态实体中的状态列表。一切都很好。但是,我现在正在尝试向DropDownList添加“选择”选项,但它不适用于我。 你能告诉我如何解决这个问题吗?

ASP.NET代码:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.Items.Add(new ListItem("Select", "0", true));
            bindStatusDropDownList();
        }
    }

private void bindStatusDropDownList()
    {
        Status status = new Status();
        DropDownList1.DataSource = status.getData();
        DropDownList1.DataValueField = "ID";
        DropDownList1.DataTextField = "Description";
        DropDownList1.DataBind();
    }

更新:

我也尝试在DropDownList的标记集中做,但它对我来说也不起作用

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
            </asp:DropDownList>

7 个答案:

答案 0 :(得分:21)

它不起作用的原因是因为您要将一个项目添加到列表中,然后使用新的DataSource覆盖整个列表,这将清除并重新填充您的列表,丢失第一个手动添加的项目。

所以,你需要反过来这样做:

Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();

// Then add your first item
DropDownList1.Items.Insert(0, "Select");

答案 1 :(得分:9)

虽然这是一个相当古老的问题,但另一种方法是更改​​ AppendDataBoundItems 属性。所以代码将是:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                  OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
                  AppendDataBoundItems="True">
     <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>

答案 2 :(得分:1)

移动DropDownList1.Items.Add(new ListItem(“Select”,“0”,true)); 在bindStatusDropDownList();

之后

这样:

    if (!IsPostBack)
    {
        bindStatusDropDownList(); //first create structure
        DropDownList1.Items.Add(new ListItem("Select", "0", true)); // after add item
    }

答案 3 :(得分:1)

如果你做了&#34;添加&#34;它会将它添加到列表的底部。你需要做一个&#34;插入&#34;如果您希望将项目添加到列表顶部。

答案 4 :(得分:1)

我尝试使用以下代码。它为我工作很好

    let string = NSMutableAttributedString(string: "1000.12")
    string.addAttribute(NSFontAttributeName,value: UIFont.systemFont(ofSize: 25.0), range: NSRange(location: 0, length: 4))
    string.addAttribute(NSFontAttributeName,value: UIFont.systemFont(ofSize: 10.0), range: NSRange(location: 5, length: 2))

答案 5 :(得分:0)

Private Sub YourWebPage_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete

     If Not IsPostBack Then
     DropDownList1.Items.Insert(0, "Select")
     End If

End Sub

答案 6 :(得分:0)

如果要使第一项变为不可选择状态,请尝试以下操作:

DropDownList1.Items.Insert(0, new ListItem("Select", "-1"));
DropDownList1.Items[0].Attributes.Add("disabled", "disabled");