2013-07-03 1 views
0

У меня есть страница, которая создала таблицу с данными XML. В моем коде ниже я закодировал WebMethod, который создал XML-данные из SQL. Но моя страница не вызывает этот WebMethod и не создает эту таблицу. Имеет ли это смысл?JQuery не работает с XML. Не вызывайте WebMethod

$(document).ready(function() { 
     source = 
     { 
      datatype: "xml", 
      datafields: [ 
       { name: 'User', type: 'string' }, 
       { name: 'RequestDate', type: 'DateTime' }, 
       { name: 'SituationDesc', type: 'string' } 
      ], 
      async: false, 
      record: 'Table', 
      url: 'Tickets.aspx/GetTickets', 
     }; 
     var dataAdapter = new $.jqx.dataAdapter(source, { 
     contentType: 'application/json; charset=utf-8'} 
     }); 
     $("#jqxgrid").jqxGrid(
     { 
      width: 670, 
      source: dataAdapter, 
      theme: 'classic', 
      columns: [ 
       { text: 'Product Name', datafield: 'User', width: 250 }, 
       { text: 'Date', datafield: 'RequestDate', cellsalign: 'right', cellsrenderer: cellsrenderer, width: 100 }, 
       { text: 'Situation', datafield: 'SituationDesc', cellsalign: 'right', cellsrenderer: cellsrenderer, width: 100 }, 
      ] 
     }); 
    }); 

<body class='default'> 
<div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;"> 
    <div id="jqxgrid"> 
    </div> 
</div> 

[WebMethod] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)] 
public string GetTickets() 
{ 
    string query = "SELECT [User],RequestDate,SituationDesc, FROM Ex"; 
    SqlCommand cmd = new SqlCommand(query); 
    DataSet data = GetData(cmd); 
    System.IO.StringWriter w = new System.IO.StringWriter(); 
    data.Tables[0].WriteXml(w, XmlWriteMode.WriteSchema, false); 
    return w.ToString(); 
} 

private DataSet GetData(SqlCommand cmd) 
{ 

    string strConnString = ConfigurationManager.ConnectionStrings["XX"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(strConnString)) 
    { 
     using (SqlDataAdapter sda = new SqlDataAdapter()) 
     { 
      cmd.Connection = con; 
      sda.SelectCommand = cmd; 
      using (DataSet ds = new DataSet()) 
      { 
       sda.Fill(ds); 
       return ds; 
      } 
     } 
    } 
} 

ответ

1

Вы на самом деле не объявлен статический метод для вашего Ajax для вызова.

Я не прошли через весь код, хотя эта часть наверняка неправильно ..

[WebMethod] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)] 
public string GetTickets() 
{ 

Должно быть Обратите внимание на «статические» Декларация

[WebMethod] 
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)] 
    public static string GetTickets() 
    { 

Также - попробуйте установка Firebug (или аналогичного) - вы сможете увидеть, какие ошибки присутствуют в браузере при попытке вызвать метод. Это поможет вам дополнительно определить возможные дополнительные ошибки.

вам также необходимо объявить private DataSet GetData(SqlCommand cmd)static после внесения изменений выше, иначе он будет недоступен.

+0

Я перешел на статическую, но все же не работал! Не вызывайте WebMethod. У меня только этот код. Это все код! – CaioVJesus89

+0

затем установите firebug - он даст вам сообщения об ошибках ACTUAL. Только после этого мы можем прикрепить его еще ... – Darren

+0

Теперь работа! Я вызывал cellrenderer, но не декларировал его. Теперь мне нужна помощь для выравнивания этой таблицы. Я не знаю, как работать с дизайном. Как я могу выровнять и приспособить размер к каждому столбцу и таблицу в полном размере в моем окне? – CaioVJesus89