2014-03-26 2 views
2

스크립트와 관련하여 봇 문제가 있습니다. 마스터 페이지가있는 CoursesPage.aspx라는 웹 폼이 있습니다. 데이터베이스에서 코스 이름을 가져 오는 텍스트 상자에서 Jquery를 사용하여 자동 완성을 사용했습니다. jQuery는 마스터 페이지가없는 페이지에서 매력처럼 작동하지만이 페이지에서는 작동하지 않습니다.자동 완성 기능이 ASP에서 작동하지 않습니다. 마스터 페이지가 포함 된 webform

이것은 코드입니다.

<link rel="stylesheet" href="css/jquery-ui.css" /> 

    <script src="js/jquery-1.8.3.js" type="text/javascript"></script> 

    <script src="js/jquery-ui.js" type="text/javascript" ></script> 
<script type="text/javascript"> 
      function LoadList() { 
       alert("I'm good"); 
       var ds = null; 
       ds = <%=listFilter %> 
     $("#txtName").autocomplete({ 
      source: ds 
     }); 
     } 


      $(function() { LoadList(); }); 
    </script> 

경고 ("I 'm good"); 스크립트가 실행되는지 확인하기 만하면됩니다. 따라서 파일에는 아무런 문제가 없습니다. 그러나 나머지는 그렇지 않습니다.

private string BindName() 
    { 
     DataTable dt = null; 
     using (MakeConn()) 
     { 
      using (SqlCommand cmd = conn.CreateCommand()) 
      { 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "select distinct Name from courses"; 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        dt = new DataTable(); 
        da.Fill(dt); 
       } 
      } 
     } 

     StringBuilder output = new StringBuilder(); 
     output.Append("["); 
     for (int i = 0; i < dt.Rows.Count; ++i) 
     { 
      output.Append("\"" + dt.Rows[i]["Name"].ToString() + "\""); 

      if (i != (dt.Rows.Count - 1)) 
      { 
       output.Append(","); 
      } 
     } 
     output.Append("];"); 

     return output.ToString(); 
    } 

답변

3

당신은 당신의 .ASPX 코드에서 마크 업을 제공하지 않았다

뒤에 코드입니다. 그러나 TextBox에 대해 생성 된 ID는 ClientIdMode로 인해 다를 수 있습니다. 확실하지 않은 경우 생성 된 HTML을 볼 수 있습니다.

당신이해야 할 일은 TextBox의 ClientIdMode를 Static으로 설정하는 것입니다. 그러면 클라이언트 측의 ID는 "txtName"이됩니다.

<asp:TextBox runat="server" id="txtName" ClientIdMode="Static" /> 

자세한 내용은 MSDN ASP.NET Web Server Control Identification을 참조하십시오.


web.config에서 단일 설정으로 모든 페이지의 모든 컨트롤에 대해 ClientIdMode를 설정할 수 있습니다.

<configuration> 
    <system.web> 
     <pages clientIDMode="Static"></pages> 
    </system.web> 
</configuration> 

이 지침은 here입니다.


또 다른 방법은 ASP.NET 인라인을 사용하여 JavaScript에 ClientId를 부여하는 것입니다. 이렇게하면 txtName을 삭제하거나 이름을 바꾼 경우 런타임에 자동으로 실패하는 대신 컴파일 오류가 발생한다는 이점이 있습니다.

$("#<%= txtName.ClientID %>").autocomplete(); 
+0

예! 그것은 일했다!! 나는 저녁 내내 이걸 보냈다. 감사합니다. – YehCheez