【问题标题】:How to use jQueryUI (variable) with MySQL query如何在 MySQL 查询中使用 jQueryUI(变量)
【发布时间】:2026-02-13 13:10:01
【问题描述】:

我在我的 WebForm 上放置了一个 jQueryUICalendar 控件,我希望该表单的用户能够选择(开始)日期和(结束)日期。我需要将用户选择的那些(日期)值(作为变量)传递给 MySQL,以便在用户按下表单上的按钮后运行查询。我的代码如下:

--jQuery 代码--

    <form id="form1" runat="server">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script type="text/javascript" >
        $(function(){
             $("startDate").datepicker({ dateFormat: 'yy-mm-dd' });
             $("endDate").datepicker({ dateFormat: 'yy-mm-dd'   }).bind("change",function(){

    var minValue = $(this).val();
    minValue = $.datepicker.parseDate("yy-mm-dd", minValue);
    minValue.setDate(minValue.getDate()+1);
    $("#to").datepicker( "option", "minDate", minValue );

    var startDate = $(this).datepicker( "jQueryUICalendar1.Text");
    var endDate = $(this).datepicker( "jQueryUICalendar2.Text");

       })

    });
</script>

现在这是我一直在使用的 MySQL c0de:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectioNStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT stamp as 'Date', order_No as 'Order #', places.label as 'Location' FROM order_info, places WHERE originating_places_id = '123' and places.label = 'Detroit, MI' and stamp between '20150101' and now();">

<SelectParameters>
<asp:QueryStringParameter Name="sDate" QueryStringField="order_stamp" DbType="Date" />
<asp:QueryStringParameter Name="eDate" QueryStringField="order_stamp" DbType="Date" />
</SelectParameters>

^ 并且只要我内联代码查询一切都按预期工作。当我尝试执行以下操作时:

例如,戳在@sDate@eDate之间

查询失败。此外,似乎 SQL 甚至根本不承认日期选择器。我是-当然-这是 b/c 我将对此一无所知,但是 ---- 如果你们中的一个 C# / jQueryUI / MySQL 大师可以告诉我我做错了什么,它会不胜感激。

【问题讨论】:

  • p.s.,我是 Stack 的新手;;对于这篇文章中与格式相关的问题,我深表歉意。

标签: c# jquery mysql asp.net jquery-ui-datepicker


【解决方案1】:

试试这个:

protected void btnUpdateData_Click(object sender, EventArgs e)
{
    String startDate = jQueryUICalendar1.text; 
    String endDate = jQueryUICalendar2.text;
    DataSet ds = getData(startDate, endDate);
    if(ds != null and ds.tables.count > 0){
        bindGrid(ds.Tables[0]);
    }
}

Private DataSet getData(string sDate, string eDate){
    DataSet ds = default(DataSet);
    SqlConnection cnx = new SqlConnection("ConnectionString");
    String query = "SELECT stamp as 'Date', order_No as 'Order #', places.label as 'Location' FROM order_info, places WHERE originating_places_id = '123' and places.label = 'Detroit, MI' and stamp between '@sDate' and '@eDate'";
   SqlCommand cmd = new SqlCommand(query, cnx);
   cmd.CommandType = CommandType.Text;
   cmd.Parameters.AddWithValue("@sDate", sDate);
   cmd.Parameters.AddWithValue("@eDate", eDate);
   sqlDataAdapter da = New SqlDataAdapter(cmd);
   try{
        cnx.Open();
        da.Fill(ds);
        cnx.Close();            }
    }
    catch (Exception ex)
    {
        Debug.Print(ex.Message);
    }
    finally
    {
        if (cnx != null) cnx.Close();
    }

    return ds;
}

private void bindGrid(DataTable dt){
    gridView.DataSource = dt;
    gridView.DataBind();
}

【讨论】:

  • 这里有点混乱。 :) 希望你能帮忙解释一下。 --> String myString = DataAccess.getDataMethod1('参数字符串'); List myList = DataAccess.getDataMethod2('参数字符串 1', '参数字符串 2'); ^ 我对语言 (C#) 还是很陌生 --- 但该方法(调用数据库)不是渲染到 GridView 所需的全部内容吗?为什么需要实施您发布的最后一个 sn-p? (我希望这不是一个愚蠢的问题——只是想学习)
  • 你有gridview吗?您的问题从未提及网格视图。最后一个代码 sn-p 只是展示了如何从代码隐藏中的数据访问类调用静态方法。并将该数据加载到可用于任何目的的变量中。您可以填充网格视图或中继器。或以您选择的任何方式输出数据。老实说,我仍然对您的实际问题感到困惑。我可能误解了你真正想要做的事情,但我看起来你在弄清楚如何将参数传递给数据库查询时遇到了麻烦。
  • ^ 很抱歉造成混乱,@GreggDuncan。这就是我所拥有的:我创建了一个 WebForm (*.aspx),它有 2 个文本框(jQueryUICalendar1 和 jQueryCalendar2)、2 个按钮(例如,更新结果、导出到 Excel)和一个 GridView 来显示返回的 MySQL 结果通过 jQueryUICalendar 中描述的值。我的问题(主要)是如何将选定的日历(jQuery)值传递给 c#,以便它可以在 MySQL 中传递和使用,您在上一篇文章中基本上已经为我回答了 ---- 现在我只是试图弄清楚如何实现它:)
  • 我现在编辑了我的答案,因为我对你想要做什么有了更好的理解。在更新结果按钮单击事件处理程序中,您希望从 jquery ui 日历文本框中获取值。将它们传递给您的 getData 方法,该方法将为您返回数据集。确保您的 DataSet 至少包含 1 个表。然后将该表传递给绑定网格方法,该方法只是将 DataTable 绑定到网格视图。只要您的 DataField 与 DataTable 中的列名匹配,它就应该正确显示。