如何在AngularJS数据表中使用deferRender?

时间:2017-07-21 07:19:52

标签: c# html angularjs web-services

我试过这段代码。

HTML代码

<table id="example" data-datatable="ng">
  <thead>
    <tr>
      <th>S.No</th>
      <th>Menu Name</th>
      <th>Menu Link</th>
      <th>Menu Path</th>
      <th>Icon</th>
    </tr>
  </thead>
  <tbody>
    <tr data-ng-repeat="x in names">
      <td>{{x.iMenu_id}}</td>
      <td>{{x.cMenu_Name}}</td>
      <td>{{x.cLink}}</td>
      <td>{{x.cHelpLink}}</td>
      <td>{{x.cCss_Class}}</td>
    </tr>
  </tbody>
</table>

脚本代码

我正在使用此功能从Web服务获取数据。

(function (angular) {
        ' ';
        angular.module('AngularApp', ['datatables'])
            .controller('AngularCtrl', ['$scope', '$http', function ($scope, $http) {
                $http.get("AngularJS.asmx/Page_Select")
                    .then(function (response) {
                        $scope.names = response.data.Table;
                        deferRender = true;
                    });
            }])
    })(window.angular);

网络服务(C#)代码

        public class HelloWorldData
        {
            public String Message;
        }

        [WebMethod]
        public void Page_Select()
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            Context.Response.Clear();
            Context.Response.ContentType = "application/json";
            HelloWorldData data = new HelloWorldData();
            string sql = "Exec PB_GetMasterDetails @opt=20";
            SqlDataAdapter da = new SqlDataAdapter(sql, System.Configuration.ConfigurationManager.AppSettings["BB_CONSTR"]);
            DataSet ds = new DataSet();
            da.Fill(ds);
            Context.Response.Write(JsonConvert.SerializeObject(ds, Newtonsoft.Json.Formatting.Indented));
        }

输出 我在网络服务中得到了这个输出。

{
  "Table": [
    {
      "iMenu_id": 10,
      "cMenu_Name": "BIRTH REGISTER1",
      "cLink": "/Ward/NewIPPatSearch.aspx",
      "cHelpLink": "Help/About us/aboutaosta.html",
      "cCss_Class": "icon-home"
    },
    {
      "iMenu_id": 14,
      "cMenu_Name": "CHANGE PASSWORD",
      "cLink": "/UserAdmin/tchangepwd.aspx",
      "cHelpLink": "Help/About us/aboutaosta.html",
      "cCss_Class": "icon-home"
    },
    ...
    ...
    ...
    ...
    ...
    ...
    {
      "iMenu_id": 2500,
      "cMenu_Name": "CITY1",
      "cLink": "/Masters/mCity.aspx",
      "cHelpLink": "Help/About us/aboutaosta.html",
      "cCss_Class": "icon-home"
    }
  ]
}

此方法对我有用,但加载数据需要相当长的时间。所以我尝试了deferRender方法,但它不适合我。有人知道另一种解决方案吗?

1 个答案:

答案 0 :(得分:0)

你应该尝试分析你的瓶颈在哪里......
这里有一些我能想到的选择:

1.1时间处理WebRequest(您的数据库提取)
 A1 - 优化数据库模式或其他优化

1.2将响应数据传输到客户端的时间
  A1 - 您可以压缩数据   A2 - 您可以将数据分页到较小的组(约100条记录),这样用户将加载一些数据,并在一段时间后获得更多数据,直到收到所有2000多条记录。

1.3处理数据客户端的时间   A1 - 似乎是合法的,我没有看到任何应该减速的东西,但我不是一个角色忍者。