从javascript读取DataTable

时间:2013-03-14 08:24:32

标签: c# javascript ajax

我有一个ajax函数从sql查询填充DataTable并返回它我的问题是我找不到解决方案来读取来自javascript的DataTable是他们的任何特定方式吗?

代码:

 [WebMethod]
public static DataTable SendOnlineContacts(int ClientID)
{

    string query = " Select fr.FRIEND_ID,cl.USER_NAME,cl.PROFILE_PIC "
                   +" from clients cl inner join friends fr on cl.CLIENT_ID =fr.FRIEND_ID "
                    +"  where fr.CLIENT_ID= "+ ClientID ;
    return  new SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query);
}

SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query)是我创建的一个类,用于简化我的工作,此函数默认返回一个DataTable

2 个答案:

答案 0 :(得分:0)

我刚刚找到了解决这个问题的好方法:)它可能对其他用户有帮助,所以我会将其作为答案发布 如果DataTable返回多行,我会将每一行读成一个字符串并放一个';'在它的末尾,而不是在那一行的每一列,我会把','所以我可以读取它们以后我将在代码中显示

服务器端:

[WebMethod]
public static string SendOnlineContacts(int ClientID)
{
    string result="";
string query = " Select fr.FRIEND_ID,cl.USER_NAME,cl.PROFILE_PIC "
               +" from clients cl inner join friends fr on cl.CLIENT_ID =fr.FRIEND_ID "
                +"  where fr.CLIENT_ID= "+ ClientID ;
DataTable Dt= SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query);
 if(Dt.Rows.Count>0)
  {
      for(int i=0;i<Dt.Rows.Count;i++)
    {
        result+=Dt.Rows[i][0]+","+Dt.Rows[i][1]+";" ;
    }
   return result;
   }
}

客户端

 $.ajax({
    type: 'POST',
    url: 'ChatPageTest.aspx/SendOnlineContacts',
    data: '{ClientID:"' + ClientID+ '"}',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data) {
      var Res=data.d.split(';');
       for(i=0;i<Res.length;i++)
       {
          var Fres=Res[i].split(',');

       }
    });

答案 1 :(得分:0)

我建议您使用标准格式在服务器端和客户端之间交换数据。 .net数据表是一个功能强大且复杂的对象。但客户端本身并不需要数据表,而是客户端需要其数据。 所以我认为重点是:如何将数据从服务器传递到客户端。

如果您管理的数据结构是普通结构,则使用字符串是一个简单的解决方案。但是,如果你想要更多的灵活性和更通用的方法,字符串操作可能很容易成为一个地狱。 所以我认为使用结构化格式(例如JSON)可能是更好的解决方案。

最终,您需要向客户端提供数据。我通常使用Jayrock以JSON格式向客户端呈现数据。看看。

实施解决方案的步骤可能是:

  1. [服务器端]实现一个处理程序:从后端检索数据,将它们序列化为JSON并公开它们
  2. [客户端]实现一个javascript客户端(如果你喜欢这个解决方案的Jayrock代理),它调用处理程序,检索数据并在DOM中呈现它们。