0

編集: 編集された制御ファイル (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 オートコンプリートはまだ機能せず、エラーもありません。ここでいくつかの質問を確認しましたが、どこを修正すればよいかわかりません。誰かが私を助けることができますか?

4

2 に答える 2

2

DNN 6 を使用しているため、フレームワークには jQuery UI が含まれています。マークアップから JavaScript インクルードを削除DotNetNuke.Framework.jQuery.RequestUIRegistrationし、Page_Load.

そこから、ページのソースを表示して、URL が正しいことを確認します。通常、リソースへのパスを取得するのResolveUrlではなく、を使用します (例: )。 ModulePath<%=ResolveUrl("Search_Username.ashx")%>

そうでなければ、それはかなり合理的に見えます。jqueryui.com の「キャッシュを使用して削除」の例を見て、それが提供するソース メソッドにログを追加すると、実際に接続され、呼び出しを行い、応答を取得しているかどうかを確認できます。

于 2012-06-18T12:35:36.603 に答える
1

*DNN 6 を使用しているため、jQuery UI がフレームワークに含まれています。マークアップから JavaScript インクルードを削除DotNetNuke.Framework.jQuery.RequestUIRegistrationし、Page_Load.

于 2012-11-08T12:15:42.533 に答える