【问题标题】:jQuery autocomplete: change SQL query depending on selected checkboxjQuery 自动完成:根据选中的复选框更改 SQL 查询
【发布时间】:2010-10-26 10:33:04
【问题描述】:

想象一下,我有一个文本框(带有自动完成 1.1,而不是最新的 UI 版本)和一个复选框。 文本框触发一个 asp.net .ashx 页面,该页面将在 sql-server 上执行一个存储过程并返回结果。

一切正常,但我想添加另一个功能。 当复选框被选中时,我希望执行 stored_procedure_1。 如果未选中该复选框,则必须执行 stored_procedure_2。 该复选框默认未选中。

我的问题: 如果复选框被选中,我如何告诉 ashx 页面..? 默认情况下,自动填充将触发类似的内容: autocompletedata.ashx?q = myname em>,它将执行stordent_procedure_2,但是当检查复选框时,它必须触发autocompletedata.ashx?q=myname&mycheckbox=begin,以便执行存储_procedure_1。

我是否必须添加一些 jQuery 代码才能通过选中的复选框? 我完全迷路了..

提前致谢。

表单元素:

<input id="search_employee" type="text" class="employee" />
<input type="checkbox" name="mycheckbox" value="begin" />

jQuery:

 $().ready(function() {

        $("#search_employee").autocomplete("includes/AutocompleteData.ashx", {
            minChars: 3,
            max: 15,
            selectFirst: false,
            scrollHeight: 300,
            formatItem: function(data, i, n, value) {
            if (value.split("_")[3]!== null)
            {
            return "<img style = 'width:40px;height:53px;float:left; margin:2px 5px 2px 0' src='/pictures/thumbs/"
            + value.split("_")[3] + "'/> " + value.split("_")[0] + "<br /><span class=smallname>" + value.split("_")[2] + "<br/>" + value.split("_")[4] + "</span>";
        } 
    },
            formatResult: function(data, value) {
                return value.split("_")[0];
            }
        });

autocompletedata.ashx 的一部分:

Dim searchname As String = context.Request.QueryString("q")
Dim searchstart as string = context.Request.QueryString("mycheckbox")
Dim searchsql as string

if searchstart = "begin" then
   searchsql = "stored_procedure_1"
else
   searchsql = "stored_procedure_2"
end if

Dim conn As SqlConnection = New SqlConnection
conn.ConnectionString = ConfigurationManager.ConnectionStrings("MyConn").ConnectionString
Dim cmd As SqlCommand = New SqlCommand
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.CommandText = searchsql.ToString
cmd.Parameters.AddWithValue("@SearchText", searchname)         

【问题讨论】:

    标签: asp.net jquery sql autocomplete ashx


    【解决方案1】:

    您可以使用 .setOptions 设置附加参数:

    ac.setOptions({ params: { paramOne:'somevalue', somethingelse:'foobar' } });
    

    这是编程方式,但在你的情况下:

    $("#search_employee").autocomplete("includes/AutocompleteData.ashx", {
       params: { flag:'true' }, // just grab the checked attr beforehand
         ...//rest of your AC stuff
    

    这将执行以下 HTTP GET:

    GET: includes/AutocompleteData.ashx?flag=true
    

    允许您通过 ASHX 中的 Request.QueryString 集合访问它。

    编辑

    我的错 - 我在考虑另一个版本的 AC。

    我认为参数称为“extraParams”:

    $("#search_employee").autocomplete("includes/AutocompleteData.ashx", {
       extraParams: { flag:'true' }
    

    两个都试一下,一个会/应该有效。 :)

    HTH。

    【讨论】:

    • 感谢您在正确的方向上帮助我 :) 当我添加“extraParams:{'mycheckbox':'begin'}”时,它确实会调用stored_procedure_1。那是进一步的一步。但它应该只在选中复选框时添加那些额外参数(否则返回 false)。我如何(以及在​​哪里)动态设置复选框的值?
    • “返回假”是什么意思?从您的代码来看,如果检查了 CB,您想调用 SP1,否则调用 SP2 - 不是吗?您将无法传递“开始”或 null,保持简单 - 只需将选中的属性直接传递给 ASHX:extraParams: { flag: $("#idOfYourCheckbox").attr("checked") }
    • 太好了,很高兴它成功了。 :) 顺便说一句 - 新的 AC 更好(我现在正在使用它)。您可以完全控制 AJAX 调用,并且可以应用不同的主题。只是想我会提到这一点。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多