如何让jQuery UI在DotnetNuke 6+中工作

时间:2012-06-18 08:59:52

标签: c# jquery-ui dotnetnuke

编辑: 这是编辑过的控制文件(control.ascx):

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Sale.ascx.cs" Inherits="Enmasse.Modules.Demo_Enmasse.Sale" %>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#<%=txtuser.ClientID%>").autocomplete('<%=ResolveUrl("Search_Username.ashx")%>');
        function AnotherJSFunction{
...
}
        });      
    </script>

    <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex=0>
    <asp:View ID="main" runat="server">
    <div class=item>
    <asp:TextBox ID="txtuser" runat="server" ></asp:TextBox><br />
    ...

这是编辑后的代码(control.ascx.cs):

protected void Page_Load(object sender, System.EventArgs e)
       {
            DotNetNuke.Framework.jQuery.RequestUIRegistration();
       }

这是Web处理程序,以防万一(ashx):

<%@ WebHandler Language="C#" Class="Search_Username" %>

using System;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Text;

public class Search_Username : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        string prefixText = context.Request.QueryString["q"];
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select Username from Users where Username like @SearchText + '%' and IsSuperUser <> 1";
                cmd.Parameters.AddWithValue("@SearchText", prefixText);
                cmd.Connection = conn;
                StringBuilder sb = new StringBuilder();
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        sb.Append(sdr["Username"]).Append(Environment.NewLine);
                    }
                }
                conn.Close();
                context.Response.Write(sb.ToString());
            }
        }
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}

我已经测试了Web处理程序Search_Username.ashx并且它工作正常,但我不确定该文件的链接是否正确。 jQuery自动完成仍然不起作用,也没有错误。我不知道在哪里修复,虽然我在这里回顾了一些问题。有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

由于您使用的是DNN 6,因此jQuery UI包含在框架中。从标记中删除JavaScript包含,并在DotNetNuke.Framework.jQuery.RequestUIRegistration中添加Page_Load

从那里,我会查看页面上的来源并检查您的网址是否正确。通常,我会使用ResolveUrl而不是ModulePath来获取资源的路径(例如<%=ResolveUrl("Search_Username.ashx")%>)。

否则看起来很合理。您可以查看jqueryui.com中的“Remove with caching”示例,并在其提供的源方法中添加一些日志记录,这样您就可以查看是否实际上已进行了联网,拨打电话和获取响应。 / p>

答案 1 :(得分:1)

*由于您使用的是DNN 6,因此jQuery UI包含在框架中。从标记中删除JavaScript包含,并在DotNetNuke.Framework.jQuery.RequestUIRegistration中添加Page_Load