簡體   English   中英

asp.net下拉列表

[英]asp.net dropdownlist

我有兩個下拉列表用於搜索,第一個列表用於城市,第二個列表用於所選城市內的區域。 我想在第二個下拉列表中添加一個默認值,它將默認搜索所有區域,除非從包含用於特定搜索的areaID的列表中選擇了特定區域。

 <asp:DropDownList ID="DropDownList1" runat="server" 
DataSourceID="SqlDataSource1" DataTextField="cityName" AutoPostBack="true" DataValueField="cityID">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT * FROM [Cities]"></asp:SqlDataSource>
<asp:DropDownList ID="DropArea" runat="server" DataSourceID="SqlArea" 
    DataTextField="areaName" DataValueField="areaID">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlArea" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [area] WHERE ([cityID] = @cityID)">
    <SelectParameters>
        <asp:ControlParameter ControlID="DropDownList1" DefaultValue="0" Name="cityID" 
            PropertyName="SelectedValue" Type="Int16" />
    </SelectParameters>
</asp:SqlDataSource>
    <asp:Button ID="Button1" runat="server" Text="Search" onclick="Button1_Click" />

從代碼后面綁定第二個。 創建一個數據表,並在開頭插入“選擇”文本,然后將數據表綁定到DDL。 DataTable dt = DataRow dr = dt.NewRow()dr [“ areaName”] =“ All”; dr [“ SqlArea”] =“全部”; tbldata.Rows.InsertAt(dr,0);

DropArea.DataSource = dt; DropArea.DataBind();

克里斯,

我從下面的答案這里得到了這個主意,但基本上您想將查詢修改為以下形式:

您的原件:

SELECT * FROM [Cities]

改成:

SELECT City FROM [Cities]
UNION ALL
SELECT 'ALL'

舊問題,但您從未找到答案。

您可以嘗試為第二個下拉列表添加OnDataBound =“ DropArea_DataBound”事件。

並在代碼中使用:

protected void DropArea_DataBound(object sender, EventArgs e)
{
    DropArea.Items.Insert(0, new ListItem() {Value = "-1", Text = "ALL"});
}

然后,當您處理click事件時,請檢查:

var value = DropArea.SelectedItem.Value;
if(string.equals(value, '-1')
{
   use your logic here
}

希望對您的問題有所幫助。

最好的問候,迪瑪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM