【问题标题】:drop down list value in asp.netasp.net 中的下拉列表值
【发布时间】:2013-08-23 16:24:31
【问题描述】:

我想向下拉列表中添加一个无法选择的值,例如标题。 例如:我有一个月的下拉列表。第一项应该是“选择月份”,这不应该被选中。接下来是从一月到十二月。我该怎么做?

这是我当前的代码。

string selectmonth = "select * from tblmonth";
SqlCommand scmselect = new SqlCommand(selectmonth, scnbuboy);

SqlDataReader sdrselect = scmselect.ExecuteReader();

drmonth.DataTextField = "month";
drmonth.DataValueField = "monthID";
drmonth.DataSource = sdrselect;

drmonth.DataBind();

【问题讨论】:

    标签: asp.net drop-down-menu


    【解决方案1】:
    <asp:DropDownList ID="DdlMonths" runat="server">
        <asp:ListItem Enabled="true" Text="Select Month" Value="-1"></asp:ListItem>
        <asp:ListItem Text="January" Value="1"></asp:ListItem>
        <asp:ListItem Text="February" Value="2"></asp:ListItem>
        ....
        <asp:ListItem Text="December" Value="12"></asp:ListItem>
    </asp:DropDownList>
    

    您甚至可以使用 RequiredFieldValidator 忽略此项目,它认为它未选中。

    <asp:RequiredFieldValidator ID="ReqMonth" runat="server" ControlToValidate="DdlMonths"
        InitialValue="-1">
    </asp:RequiredFieldValidator>
    

    【讨论】:

    • 谢谢。终于明白了。我想我仍然需要对下拉列表本身做点什么。
    【解决方案2】:

    您可以添加一个空值,例如:

    ddlmonths.Items.Insert(0, new ListItem("Select Month", ""))
    

    只需添加一个验证以防止选择空选项,例如asp:RequiredFieldValidator

    【讨论】:

      【解决方案3】:

      如果您想努力工作,这些都是很好的答案。但我的猜测是,您已经拥有来自数据绑定元素的列表所需的项目,并且只想在该列表的顶部添加“嘿,伙计 - 选择一个!”选项。假设是这样……

      这是简单的答案。 而且它总是有效...

      1. 按照您的计划执行数据绑定列表。
      2. 然后,在 Visual Studio 中,编辑下拉菜单中的项目,
      3. 添加一个手动项目,将其设为您的“选择项目”选项,
      4. 使用 VS2012 中项目的属性窗口,将其选中。现在关闭那个窗口。
      5. 现在,转到左下方 Visual Studio 中的属性框(确保已选择下拉菜单),并查找属性“AppendDataBoundItems”。
      6. 它将显示为 False,请将其设置为 True。

      现在您将获得一个下拉列表,其中包含您的所有数据项,前面是您在手动项中所做的“选择一个项目”语句。如果可能,尝试给它一个默认值,这将消除您可能遇到的任何错误。默认为零,因此如果零不是问题,则不要理会它,如果零是问题,请将项目中的默认零替换为不会导致代码崩溃的内容。

      别再这么努力了……这就是 Visual Studio 的用途。

      【讨论】:

        【解决方案4】:

        试试这个

            <asp:DropDownList ID="ddList" runat="server">
            <asp:ListItem Value="">--Select Month--</asp:ListItem>
            <asp:ListItem Value="1">January</asp:ListItem>
            <asp:ListItem Value="2">Feburary</asp:ListItem>
            ...
            <asp:ListItem Value="12">December</asp:ListItem>
            </asp:DropDownList>
        

        默认选择的列表项的值应该为空,然后它可以正常工作

        【讨论】:

          【解决方案5】:

          你可以试试这个

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

          【讨论】:

            【解决方案6】:

            假设您有一个名为 ddlMonths 的下拉列表:

            ddlMonths.Items.Insert(0,new ListItem("Select a month","-1");
            

            【讨论】:

            • 我试过了:string selectmonth = "select * from tblmonths"; SqlCommand scmselect = new SqlCommand(selectmonth, scnbuboy); SqlDataReader sdrselect = scmselect.ExecuteReader(); drmonth.DataTextField = "月"; drmonth.DataValueField = "月 ID"; drmonth.Items.Insert(0, new ListItem("选择一个月", "-1")); drmonth.DataSource = sdrselect; drmonth.DataBind(); sdrselect.Close();但只显示数据库中的数据,而不是“选择月份”字段。
            【解决方案7】:

            简单来说,这是不可能的。因为DropdownList包含ListItem,所以默认会被选中

            但是,您可以为此使用ValidationControl

            <asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic" 
            ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
            Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>
            

            【讨论】:

              【解决方案8】:

              要使用 c# 在 asp.net 中将项目添加到具有值的下拉列表,只需添加以下代码,例如:

              try
              {
                  SqlConnection conn = new SqlConnection(conStr);
                  SqlCommand comm = conn.CreateCommand();
                  comm = conn.CreateCommand();
                  comm.CommandText = "SELECT title,gid from Groups";
                  comm.CommandType = CommandType.Text;
                  conn.Open();
                  SqlDataReader dr = comm.ExecuteReader();
                  while (dr.Read())
                  {
                     dropDownList.Items.Add(new 
                     ListItem(dr[0].ToString(),dr[1].ToString()));
                  }
              }
              catch (Exception e)
              {
                  lblText.Text = e.Message;
              }
              finally
              {
                conn.Close();
              }
              

              【讨论】:

                【解决方案9】:

                VB 代码:

                Dim ListItem1 As New ListItem()
                ListItem1.Text = "put anything here"
                ListItem1.Value = "0"
                drpTag.DataBind()
                drpTag.Items.Insert(0, ListItem1)
                

                查看:

                <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToValidate="drpTag" 
                  ValueToCompare="0">
                </asp:CompareValidator>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-07-04
                  • 2011-10-29
                  • 1970-01-01
                  • 2018-07-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多