【发布时间】:2014-01-07 22:58:35
【问题描述】:
我正在修改别人的代码,但遇到了一个我似乎无法解决的问题。在数据库中,我们有商店位置和销售的五种产品。如果某个位置销售产品,则数据库值为“X”。如果不是,则数据库值为空。我正在修改的应用程序有一个搜索框,其中包含一个城市、邮编和五个产品的复选框(这是刚刚添加的部分。)理想情况下,您只能输入一个参数,它会根据您输入/检查的内容,或者您可以输入/检查多个参数。 city/zip 位工作正常,但结果仅显示销售所有 5 种产品的位置 - 它无法识别空值。这是我的搜索表单提交功能:
<script type="text/javascript">
$(function() {
$(".form #searchBtn").click(function() {
var searchParameters = "";
if ($(".form #city").val() != "") {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "city=" + $(".form #city").val();
}
if ($(".form #zip").val() != "") {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "zip=" + $(".form #zip").val();
}
if ($(".form #product1").is(':checked')) {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "product1=" + "X";
}
if ($(".form #product2").is(':checked')) {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "product2=" + "X";
}
if ($(".form #product3").is(':checked')) {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "product3=" + "X";
}
if ($(".form #product4").is(':checked')) {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "product4=" + "X";
}
if ($(".form #product5").is(':checked')) {
if (searchParameters != "") {
searchParameters += "&";
}
searchParameters += "product5=" + "X";
}
searchParameters = searchParameters.replace(" ","%20");
$.fn.colorbox({ href: 'locations.aspx?' + searchParameters });
});
});
</script>
此代码正在生成一个带有搜索参数的 URL,locations.aspx?city=blah&otherParamsHere。任何想法将不胜感激。
编辑
为了回答你的问题,代码都在前端。以下是生成结果的位置的查询的样子。
<asp:SqlDataSource ID="locations" runat="server"
SelectCommand="SELECT * FROM [locations] WHERE (([city] LIKE '%' + @city + '%') AND ([zip] LIKE '%' + @zip + '%') AND ([product1] LIKE '%' + @product1 + '%') AND ([product2] LIKE '%' + @product2 + '%') AND ([product3] LIKE '%' + @product3 + '%') AND ([product4] LIKE '%' + @product4 + '%') AND ([product5] LIKE '%' + @product5 + '%')) ORDER BY [retailer_name]">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="%" Name="city"
QueryStringField="city" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="zip"
QueryStringField="zip" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="product1"
QueryStringField="product1" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="product2"
QueryStringField="product2" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="product3"
QueryStringField="product3" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="product4"
QueryStringField="product4" Type="String" />
<asp:QueryStringParameter DefaultValue="%" Name="product5"
QueryStringField="product5" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
编辑
再次修改以包含表格。
<input type="text" id="city" size="20" />
<input type="text" id="zip" maxlength="5" size="5" />
<input type="checkbox" id="product1" value="" />
<input type="checkbox" id="product2" value="" />
<input type="checkbox" id="product3" value="" />
<input type="checkbox" id="product4" value="" />
<input type="checkbox" id="product5" value="" />
<input type="button" value="Search" id="searchBtn"/>
【问题讨论】:
-
可能问题出在您在locations.aspx.cs 中的后端代码中。你能在你的代码后面附加一些包含搜索方法的部分吗?
-
见上文...如果还有什么我可以告诉你的,请告诉我。
-
在下面查看我对新 Sql 语句的建议。
标签: c# javascript asp.net tsql sqldatasource