【问题标题】:Dynamic condition in SQL statement using asp.net使用asp.net的SQL语句中的动态条件
【发布时间】:2021-12-10 06:07:36
【问题描述】:

我正在用 asp.net 开发一个网站,我正在使用 2 个下拉列表。 当在第一个下拉列表中选择一个项目时,将执行查询并将输出加载到第二个下拉列表中。

问题是查询的条件是动态的,取决于所选项目。 查询 : select Series from Football where Levels='selected item value'

【问题讨论】:

  • 那么到底是什么问题?也请提供代码
  • 请分享一个sn-p的代码作为例子。否则,很难理解你的问题。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: c# sql asp.net


【解决方案1】:

好吧,我们想选择一个城市,(第一个下拉菜单)。

然后说,我们要选择酒店。

所以,像这样的两个简单的下拉菜单:

        <div style="float:left">
            Select City<br />
            <asp:DropDownList ID="cboCity" runat="server"
                DataTextField ="City"
                DataValueField="City"
                AutoPostBack="true" OnSelectedIndexChanged="cboCity_SelectedIndexChanged">
            </asp:DropDownList>
        </div>

        <div style="float:left;margin-left:35px">
            Select Hotel<br /> 
            <asp:DropDownList ID="cboHotel" runat="server"
                DataTextField="HotelName"
                DataValueField="ID">
            </asp:DropDownList>
        </div>

我们的代码可以这样说: (注意第一个下拉菜单的自动回发)。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Load first combo box
            SqlCommand cmdSQL = new SqlCommand("SELECT City from City Order by City");

            cboCity.DataSource = MyRstP(cmdSQL);
            cboCity.DataBind();
            cboCity.Items.Insert(0, "");    // add blank (no select)
        }

    }

    protected void cboCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlCommand cmdSQL =
           new SqlCommand("SELECT ID, HotelName from tblhotels where City = @City");

        cmdSQL.Parameters.Add("@City", SqlDbType.NVarChar).Value = cboCity.SelectedItem.Text;

        cboHotel.DataSource = MyRstP(cmdSQL);
        cboHotel.DataBind();
    }
    DataTable MyRstP(SqlCommand cmdSQL)
    {
        DataTable rstData = new DataTable();
        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
        {
            using (cmdSQL.Connection = conn)
            {
                conn.Open();
                rstData.Load(cmdSQL.ExecuteReader());
            }
        }
        return rstData;
    }

因此结果是这样的:

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 2013-10-06
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多