C# 要在页面加载后进行中继器数据绑定吗

C# 要在页面加载后进行中继器数据绑定吗,c#,asp.net,repeater,C#,Asp.net,Repeater,我使用一个web服务API来提取json数据,然后将其转换为Dataset,并在页面加载中将数据显示到REPEATER中。现在我的问题是,有没有一种方法我可以先加载页面,然后它会显示一条消息,比如加载,请稍候,然后所有的处理,比如拉取数据和在中继器中显示。asp.net页面生命周期中是否有类似的事件。在asp.net生命周期中没有类似的事件,尽管您可以使用.net控件(更新面板、计时器等)设计一些东西,但更合理的解决方案可能是简单地使用AJAX和 通常,您也可以省略服务器端转发器的外壳元素,只填

我使用一个web服务API来提取json数据,然后将其转换为Dataset,并在页面加载中将数据显示到REPEATER中。现在我的问题是,有没有一种方法我可以先加载页面,然后它会显示一条消息,比如加载,请稍候,然后所有的处理,比如拉取数据和在中继器中显示。asp.net页面生命周期中是否有类似的事件。

在asp.net生命周期中没有类似的事件,尽管您可以使用.net控件(更新面板、计时器等)设计一些东西,但更合理的解决方案可能是简单地使用AJAX和


通常,您也可以省略服务器端转发器的外壳元素,只填充本机客户端HTML元素。

在ASP.NET生命周期中没有类似的事件,尽管您可以设计一些.NET控件(更新面板、计时器等)但一个更合理的解决方案可能是简单地使用AJAX和


通常,您也可以省略服务器端转发器的外壳元素,只填充纯客户端HTML元素。

我建议您更改策略。使用经典的AJAX(jQuery)+html/css代替将ASP服务器控件及其事件与AJAX混合使用

您的中继器将是一个简单的div

<div id="DataWrapper">
  <div id="loadingLabel" style="display:none;">Loading...</div>
  <div id="DataContainer">
  </div>
</div>
在JavaScript中,创建一个调用此服务的函数: //但是在那次呼叫之前,显示装载量。。标签

$('#loadingLabel').show();
$.ajax({
                type: 'POST',
                url: '/' + 'GetMyData',
                data: {'KeyID':'8'},
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                timeout: 30000,
                success: onSuccess,
                error: onError
            });
..并在JavaScript中循环结果:

function onSuccess(result)
  {
    var src = result.d;

      for (var post in src) {
        /*
         here you can create an JavaScript element and assign a CSS class to it
        */
        $("#DataContainer").append('<div class="myClass">'+ src[post].someName+'</div>');
     }
     // when loading is finished hide the loading.. label
    $('#loadingLabel').hide();
  }
这当然只是一个非常简短的回答,但我希望它能给你一些大概的想法。这是一个非常轻量级的解决方案,您会发现它比混合使用ASPs中继器和更新面板等更有效

要获得有关性能的真实数字,请安装Fiddler并进行比较

此外,请查看这篇非常有用的文章,其中包含一些非常有用的建议:
我建议你改变策略。使用经典的AJAX(jQuery)+html/css代替将ASP服务器控件及其事件与AJAX混合使用

您的中继器将是一个简单的div

<div id="DataWrapper">
  <div id="loadingLabel" style="display:none;">Loading...</div>
  <div id="DataContainer">
  </div>
</div>
在JavaScript中,创建一个调用此服务的函数: //但是在那次呼叫之前,显示装载量。。标签

$('#loadingLabel').show();
$.ajax({
                type: 'POST',
                url: '/' + 'GetMyData',
                data: {'KeyID':'8'},
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                timeout: 30000,
                success: onSuccess,
                error: onError
            });
..并在JavaScript中循环结果:

function onSuccess(result)
  {
    var src = result.d;

      for (var post in src) {
        /*
         here you can create an JavaScript element and assign a CSS class to it
        */
        $("#DataContainer").append('<div class="myClass">'+ src[post].someName+'</div>');
     }
     // when loading is finished hide the loading.. label
    $('#loadingLabel').hide();
  }
这当然只是一个非常简短的回答,但我希望它能给你一些大概的想法。这是一个非常轻量级的解决方案,您会发现它比混合使用ASPs中继器和更新面板等更有效

要获得有关性能的真实数字,请安装Fiddler并进行比较

此外,请查看这篇非常有用的文章,其中包含一些非常有用的建议:

你应该重新考虑改变计划。中继器是一个只在服务器端工作的asp控制器。您希望在不显示数据的情况下显示页面,并使用不存在且不是已知元素的repeater在客户端加载数据。您应该重新考虑更改计划。中继器是一个只在服务器端工作的asp控制器。您希望在不显示数据的情况下显示页面,并使用不存在且不是已知元素的repeater在客户端加载数据。使用泛型类型“System.Collections.generic.IEnumerable”获取错误需要1个类型参数,用于使用泛型类型“System.Collections.generic.IEnumerable”获取错误需要1个类型参数用于使用IEnumerable的类型参数