使用搜索按钮搜索并显示三个下拉列表

时间:2012-03-11 16:18:47

标签: c# asp.net

我创建了一个包含3个DropDownLists和一个搜索按钮的搜索功能。如何在同一页面上显示它?

这是我的代码:

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //read sql server connection string from web.config file
            string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
            SqlConnection conn = new SqlConnection(constring);
            DataTable dt = new DataTable("emed_province");

            using (conn)
            {
                conn.Open();
                SqlCommand comm = new SqlCommand("SELECT *  FROM emed_province ORDER BY PROVINCE_NAME ASC", conn);
                SqlDataAdapter adptr = new SqlDataAdapter(comm);
                adptr.Fill(dt);
            }

            ddlProvince.DataSource = dt;
            ddlProvince.DataTextField = "PROVINCE_NAME";
            ddlProvince.DataValueField = "PROVINCE_CODE";
            ddlProvince.DataBind();
        }
    }

    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
    {
        string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
        SqlConnection conn = new SqlConnection(constring);
        DataTable dt = new DataTable("emed_province");

        using (conn)
        {
            conn.Open();
            PROVINCE_CODE = '" + ddlProvince.SelectedValue + "'", conn);
            SqlCommand comm = new SqlCommand("SELECT * FROM emed_city WHERE PROVINCE_CODE =@pcode", conn);
            comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);
            SqlDataAdapter adptr = new SqlDataAdapter(comm);
            adptr.Fill(dt);

            SqlParameter param = new SqlParameter();
            param.ParameterName = "@pcode";
            param.Value = ddlProvince;

            comm.Parameters.Add(param);
        }
        ddlCity.DataSource = dt;
        ddlCity.DataTextField = "CITY_NAME";
        ddlCity.DataValueField = "CITY_CODE";
        ddlCity.DataBind();
    }

    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
        SqlConnection conn = new SqlConnection(constring);
        DataTable dt = new DataTable("emed_city");

        using (conn)
        {
            conn.Open();
        PROVINCE_CODE = '" + ddlProvince.SelectedValue + "'", conn);
            SqlCommand comm = new SqlCommand("SELECT * FROM emed_doctors_hospitals     WHERE CITY_CODE =@ccode", conn);
            comm.Parameters.AddWithValue("@ccode", ddlCity.SelectedValue);
            SqlDataAdapter adptr = new SqlDataAdapter(comm);
            adptr.Fill(dt);

            SqlParameter param = new SqlParameter();
            param.ParameterName = "@ccode";
            param.Value = ddlCity;

            comm.Parameters.Add(param);
        }
        ddlSched.DataSource = dt;
        ddlSched.DataTextField = "SCHEDULE";
        ddlSched.DataValueField = "HOSPITAL_CODE";
        ddlSched.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }
}

当有人在DropDownList中选择一个值并点击该按钮时,它将显示省,城市和特定时间表中可用的医生列表。

2 个答案:

答案 0 :(得分:0)

您基本上需要做的是以声明方式将控件放在ASPX页面中:

<asp:DropDownList id="ddlSche" runat="server" />

您可以使用ddlSched.SelectedValue和类似方法在Page_Load中计算结果。

基本上,你使用按钮的onclick处理程序来处理这类事情:但是,由于您已经有SelectedIndexChanged事件,因此您似乎正走在正确的轨道上。当用户回发页面并且索引被更改时(或者换句话说,用户选择DropDownList中当前选择之外的其他内容),它被触发。

答案 1 :(得分:0)

  1. 检查此样本。我在这个例子中使用了SQLDatasource和SelectParameters(你 可以用你自己的对象数据源,自定义绑定等替换它。)SQLDataSource Select Parameters
  2. 第二个下拉列表会在第一个下拉列表更改时自动填充
  3. On Button即使我只是选择每个下拉列表中当前选择的值(您可以以相同的方式选择您的医生列表)
  4. ASPX

        <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Cascading DropDown.aspx.cs"
        Inherits="Cascading_DropDown" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">
        <title></title> </head> <body>
        <form id="form1" runat="server">
        <div>
            <label>
                Category:</label>
            <asp:DropDownList ID="ddlCategories" runat="server" AppendDataBoundItems="True" AutoPostBack="True"
                DataSourceID="sdsCategory" DataTextField="CategoryName" DataValueField="CategoryID"
                OnSelectedIndexChanged="ddlCategories_SelectedIndexChanged">
                <asp:ListItem Text="-Select-" Value="" />
            </asp:DropDownList>
            <br />
            <label>
                Products:</label>
            <asp:DropDownList ID="ddlProducts" runat="server" DataSourceID="sdsProducts" DataTextField="ProductName"
                DataValueField="ProductID">
            </asp:DropDownList>
            <asp:Button ID="Button1" runat="server" Text="Search Prodcut" OnClick="Button1_Click" />
            &nbsp;<asp:Label ID="lblSelectedValues" runat="server"></asp:Label>
        </div>
        <asp:SqlDataSource ID="sdsCategory" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories] ORDER BY [CategoryName]">
        </asp:SqlDataSource>
        <asp:SqlDataSource ID="sdsProducts" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT [ProductID], [ProductName] FROM [Alphabetical list of products] WHERE ([CategoryID] = @CategoryID)">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlCategories" Name="CategoryID" PropertyName="SelectedValue"
                    Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
        </form> </body> </html>
    

    .CS

    protected void Page_Load(object sender, EventArgs e)
    {
    
    }
    protected void ddlCategories_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlCategories.SelectedValue == "")
        {
            ddlProducts.Items.Clear();
            ddlProducts.SelectedIndex = -1;
        }
    
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        lblSelectedValues.Text = "You selected Category:" + ddlCategories.SelectedItem.Text + " & prodcut:" + ddlProducts.SelectedItem.Text;
    }
    

    您可以在像Abel所说的那样的表格上删除网格视图。在您的按钮点击事件中,获取每个下拉列表选择的值&amp;执行您的查询&amp;像您正在使用下拉列表一样对数据视图进行数据处理。