gpt4 book ai didi

c# - 如果查询字符串中的一个字段为空且为字符串格式,则返回表中的所有值

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:59 25 4
gpt4 key购买 nike

我有一个页面根据查询字符串中传递的值列出表中的产品。
例如:- abc/product.aspx/subcat=Mobile&bnd=Samsung
在这里它将显示所有带有三星品牌的手机

如果 bnd 为空或未通过,即仅通过 subcat 值,我如何显示所有手机而不考虑品牌。
我需要 SqlDataSource 命令来做同样的事情。我当前的查询如下所示:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:shoppingConnectionString2 %>"
SelectCommand="SELECT * FROM [ProductDetails] WHERE (([Sub_category] = @Sub_category) AND ([Brand] = @Brand OR @Brand IS NULL))"
onselecting="SqlDataSource1_Selecting">
<SelectParameters>
<asp:QueryStringParameter Name="Sub_category" QueryStringField="subcat"
Type="String" DefaultValue="&quot; &quot;" />
<asp:QueryStringParameter Name="Brand" QueryStringField="bnd" Type="String"
DefaultValue="IS NULL" ConvertEmptyStringToNull="True" />
</SelectParameters>
</asp:SqlDataSource>

最佳答案

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string subcat = Request.QueryString["subcat"];
string bnd = Request.QueryString["bnd"];

string query = "SELECT * FROM [ProductDetails] WHERE ([Sub_category] = " + subcat + ")";
if (!String.IsNullOrEmpty(bnd))
{
query += " AND ([Brand] = " + bnd + ")";
}

SqlDataSource1.SelectCommand = query;
}
}

HTML 标记:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:shoppingConnectionString2 %>"
SelectCommand="SELECT * FROM [ProductDetails]"
onselecting="SqlDataSource1_Selecting">
</asp:SqlDataSource>

(注意删除的 SelectParameters)

我以前从未使用过 SqlDataSource,但这与我为 ObjectDataSource 所做的类似。上面的代码适用于您的场景吗?

编辑:请注意,此方法容易受到 SQL 注入(inject)攻击,因此您应该首先验证/清理查询字符串参数。

关于c# - 如果查询字符串中的一个字段为空且为字符串格式,则返回表中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21422947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com