【问题标题】:Databound drop down list - initial value数据绑定下拉列表 - 初始值
【发布时间】:2010-10-06 00:00:11
【问题描述】:

如何在 ASP.NET 中设置数据绑定下拉列表的初始值?

例如,我想要这些值,但要显示的第一个值应该是 -- Select One ---,并带有一个空值。

【问题讨论】:

    标签: asp.net vb.net drop-down-menu


    【解决方案1】:

    添加一个项目并将其“Selected”属性设置为 true,您可能还希望将“appenddatabounditems”属性设置为 true,以便在数据绑定时不会删除您的初始值。

    如果您正在谈论设置数据绑定项目中的初始值,则挂钩到您的 ondatabound 事件并设置要选择的索引=true,您将希望将其包装在“如果不是 page.isPostBack 则 .. ..”虽然

    Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As    System.EventArgs) Handles DepartmentDropDownList.DataBound
        If Not Page.IsPostBack Then
            DepartmentDropDownList.SelectedValue = "somevalue"
        End If
    End Sub
    

    【讨论】:

      【解决方案2】:

      我想你想做的是这样的:

      <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
          <asp:ListItem Text="--Select One--" Value="" />   
      </asp:DropDownList>
      

      确保“AppendDataBoundItems”设置为true,否则绑定数据时将清除“--Select One--”列表项。

      如果您将下拉列表的“AutoPostBack”属性设置为 true,您还必须将“CausesValidation”属性设置为 true,然后使用 ' RequiredFieldValidator”以确保“--Select One--”选项不会导致回发。

      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
      

      【讨论】:

        【解决方案3】:

        我所做的是在我数据绑定之后设置下拉列表的文本属性。像这样的:

           protected void LoadPersonComboBox()
            {
                var p = new PeopleBLL();
        
                rcmbboxEditPerson.DataSource = p.GetPeople();
                rcmbboxEditPerson.DataBind();
                rcmbboxEditPerson.Text = "Please select an existing person to edit...";
            }
        

        这会显示此下​​拉列表的初始可见值,但实际上不是下拉列表的一部分,也不是可选的。

        【讨论】:

          【解决方案4】:

          我知道这已经有一个选择的答案 - 但我想投入我的两分钱。 我有一个数据绑定下拉列表:

          <asp:DropDownList 
            id="country" 
            runat="server" 
            CssClass="selectOne" 
            DataSourceID="country_code" 
            DataTextField="Name" 
            DataValueField="CountryCode_PK"
          ></asp:DropDownList>
          <asp:SqlDataSource 
            id="country_code" 
            runat="server" 
            ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
            SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK"
          ></asp:SqlDataSource>
          

          在代码隐藏中,我有这个 - (默认选择美国):

          if (this.IsPostBack)
          {
            //handle posted data
          }
          else 
          {
            country.SelectedValue = "US";
          }
          

          页面最初基于 'US' 值加载,而不是试图担心 selectedIndex(如果将另一个项目添加到数据表中怎么办 - 我不想重新编码)

          【讨论】:

            【解决方案5】:

            我知道这已经过时了,但是结合这些想法可以得出一个非常优雅的解决方案:

            保留 DropDownList 的所有默认属性设置(AppendDataBoundItems=false,Items 为空)。然后像这样处理 DataBound 事件:

            protected void dropdown_DataBound(object sender, EventArgs e)
            {
                DropDownList list = sender as DropDownList;
                if (list != null)
                    list.Items.Insert(0, "--Select One--");
            }
            

            锦上添花的是,这个处理程序可以由任意数量的 DropDownList 对象共享,甚至可以放入所有项目的通用实用程序库中。

            【讨论】:

            • 在哪里调用这个方法?
            • @iQue 您可以将其设置为 DropDownList 的 OnDataBound 事件。我认为这比接受的答案要好得多,因为当 DataSource 更改并且我们重新 DataBind 时没有问题;有了接受的答案,re-DataBinding 只会将元素添加到现有列表中(可能是您想要的,但似乎更有可能不是您想要的)。
            【解决方案6】:

            要从下拉列表中选择一个值,请使用如下索引:

            如果我们有

            <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
            

            你会使用:

            DropDownList1.Items[DropDownList1.SelectedIndex].Value
            

            这将返回所选索引的值。

            【讨论】:

              【解决方案7】:
              dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");
              

              【讨论】:

                【解决方案8】:

                你好朋友在这种情况下你可以使用

                AppendDataBound="true"
                

                然后使用列表项。 例如:

                <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
                    <asp:ListItem Text="--Select One--" Value="" />   
                </asp:DropDownList>
                

                但问题是在第二次选择数据后附加旧数据。

                【讨论】:

                  猜你喜欢
                  • 2011-10-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-04-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-08-15
                  • 1970-01-01
                  相关资源
                  最近更新 更多