【问题标题】:How to add dropdown list default value如何添加下拉列表默认值
【发布时间】:2014-06-13 10:41:31
【问题描述】:

我正在使用 asp.net 从 sql 表中获取数据到下拉列表。问题是,当我为下拉列表提供默认选择时。它不采用默认值。 请看代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("select * from States_agri", conn);
        SqlDataReader dr = cmd.ExecuteReader();
        ddl_state.DataSource = dr;
        ddl_state.Items.Clear();
        ddl_state.Items.Add("--Please Select state--");
        ddl_state.DataTextField = "StateName";
        ddl_state.DataValueField = "StateID";
        ddl_state.DataBind();
        conn.Close();
    }
}
`

另请参阅下拉列表 aspx 代码供您参考。

<asp:UpdatePanel ID="FormUpdate" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddl_state" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <table>
            <tr>
                 <td>State*</td>
                 <td>
                     <asp:DropDownList ID="ddl_state" runat="server" CssClass="cbfld-popup1" AutoPostBack="true" OnSelectedIndexChanged="ddl_state_SelectedIndexChanged">
                     <asp:ListItem Enabled="true" Selected="True" Text="Please select State"></asp:ListItem>
                     </asp:DropDownList>
                 </td>

            </tr>
            <tr>
                 <td>District*</td>
                 <td>
                     <asp:DropDownList ID="ddl_district" CssClass="cbfld-popup1" runat="server">
                     <asp:ListItem Enabled="true" Selected="True" Text="Please select city"></asp:ListItem>
                                                                                                      </td>
            </tr>
         </table>
     </ContentTemplate>
</asp:UpdatePanel>

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    数据绑定后,执行以下操作:

    ddl_state.Items.Insert(0, new ListItem("Select","NA")
    

    或者在标记中添加:

    <asp:DropDownList .. AppendDataBoundItems="true">
       <Items>
           <asp:ListItem Text="Select" Value="" />
       </Items>
    </asp:DropDownList>
    

    【讨论】:

      【解决方案2】:

      你必须在 Databind 之后使用下面提到的代码

      ddl_state.Items.Insert(0, new ListItem("--Please Select state--", "0"));
      

      【讨论】:

        【解决方案3】:

        您需要在下拉列表中设置AppendDataBoundItems="true" 属性

        <asp:DropDownList ID="DropDownList1" AppendDataBoundItems="true" runat="server">
         <asp:ListItem Text="Add New" Value="0" />
        </asp:DropDownList>
        

        【讨论】:

          【解决方案4】:
          ddl_state.Items.Insert(0, new ListItem("Select","NA")
          

          【讨论】:

            【解决方案5】:

            您可以在 DropDownList 的声明中将 AppendDataBoundItems 设置为 true

            asp:DropDownList AppendDataBoundItems="true" ...>,

            这是必需的,因为正如 MSDN 中所述

            AppendDataBoundItems 属性允许您将项目添加到 ListControl 对象数据绑定发生之前。

            请看here

            【讨论】:

              【解决方案6】:

              如果您想从数据库 den 中获取数据,这将很有帮助:

              <asp:DropDownList id="MainCat_DropDownList" runat="server" Width="185px" AutoPostBack="True" DataSourceID="Maincategory_SqlDataSource" DataTextField="main_catname" DataValueField="main_catid" AppendDataBoundItems="True"></asp:DropDownList> <asp:SqlDataSource id="Maincategory_SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT main_catid, Title_id, main_catname FROM main_cat WHERE (Title_id = 1)"></asp:SqlDataSource> </TD></TR><TR><TD align=right>Package</TD><TD align=left><asp:DropDownList id="MainPack_DropDownLis" runat="server" Width="185px" AutoPostBack="True" DataSourceID="MainPackage_SqlDataSource" DataTextField="pack_name" DataValueField="pack_id">
              </asp:DropDownList>
              <asp:SqlDataSource id="MainPackage_SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:connectionString %>" SelectCommand="select main_catid,pack_id,pack_name from main_pack where main_catid=@main_catid">
                 <SelectParameters>
                   <asp:ControlParameter ControlID="MainCat_DropDownList" Name="main_catid" PropertyName="SelectedValue" />
                 </SelectParameters>
              </asp:SqlDataSource>
              

              【讨论】:

                【解决方案7】:

                AppendDataBoundItems 属性允许您在数据绑定发生之前将项目添加到 ListControl 对象。

                如果我们这样做,它将从数据库中追加项目,每当我们进行选择时,它将添加列中的所有项目,并使用列中的所有值重载。

                考虑以下示例: 1. DDL Country [如果我们选择 DDLcountry,那么它应该反映 DDLState] 2. DDL State [如果我们将选择 DDLstate,那么它应该反映 DDLcity] 3. DDL城市

                但是每当我们选择新的 DDLcountry 时,因此 DDLState 应该使用 '--select state--' 进行反映,而 DDLcity 应该是 '--select City--'

                【讨论】:

                  【解决方案8】:

                  在本例中,第三个参数是默认值:

                  @Html.DropDownList("Items", new SelectList(ViewBag.Items), (string)ViewBag.MyFilter.ToString())
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-06-24
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-09-16
                    • 2013-05-08
                    • 1970-01-01
                    相关资源
                    最近更新 更多