asp.net下拉列表

时间:2010-12-10 23:30:08

标签: asp.net

我有两个用于搜索的下拉列表,第一个列表用于城市,第二个列表用于所选城市内的区域。我想在第二个下拉列表中添加一个默认值,该默认值将默认搜索所有区域,除非从包含特定搜索的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" />

3 个答案:

答案 0 :(得分:1)

从代码中绑定第二个。创建数据表并在开始时插入Select文本并将数据表绑定到DDL。 DataTable dt = DataRow dr = dt.NewRow() dr [“areaName”] =“全部”; dr [“SqlArea”] =“全部”; tbldata.Rows.InsertAt(DR,0);

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

答案 1 :(得分:0)

您可以尝试添加第二个下拉列表OnDataBound =“DropArea_DataBound”事件。

并在代码中使用:

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

然后当您处理点击事件时,请检查:

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

希望它能帮到你解决问题。

最好的问候,迪马。

答案 2 :(得分:0)

克里斯,

我从答案HERE得到了以下想法,但基本上您希望将查询修改为以下形式:

你的原件:

SELECT * FROM [Cities]

更改为:

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

老问题,但你从来没有找到答案。