2013-12-17 3 views
1

У меня есть кнопка, которая загружает две радгриды. Первый - «страны» (получение данных из db быстро). Второй - «города» (медленно получаемые данные из db). В aspx.cs это выглядит следующим образом:Telerik загружает две радиосетки на нажатой клавише

grdCities.DataSource = doWork1(); 
grdCities.DataBind(); 

grdCountries.DataSource = doWork2(); 
grdCountries.DataBind(); 

Есть ли способ, чтобы сделать их страницу независимо друг от друга, когда данные для соответствующей сетки готовы? Должен ли я использовать потоки на стороне сервера и ajax, чтобы отправить его на страницу и как это можно сделать?

ответ

1

Пожалуйста, создайте новую веб-страницу и попытайтесь найти фрагмент кода ниже.

.aspx

<!DOCTYPE html> 
<html> 
<head runat="server"> 
    <title></title> 
    <script src="Script/jquery-1.8.2.js"></script> 
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> 
     <script> 
      $(document).ready(function() { 

      }); 
      function testclick() { 

       var ajaxManager = $find("<%= RadAjaxManager1.ClientID %>"); 
       ajaxManager.ajaxRequest("RadGrid1"); 
       ajaxManager.ajaxRequest("RadGrid2"); 

       return false; 
      } 
     </script> 
    </telerik:RadCodeBlock> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager> 
     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest" RequestQueueSize="10"> 
      <AjaxSettings> 
       <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> 
        <UpdatedControls> 
         <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
         <telerik:AjaxUpdatedControl ControlID="RadGrid2" /> 
        </UpdatedControls> 
       </telerik:AjaxSetting> 
      </AjaxSettings> 
     </telerik:RadAjaxManager> 
     <telerik:RadGrid ID="RadGrid1" runat="server"></telerik:RadGrid> 
     <telerik:RadGrid ID="RadGrid2" runat="server"></telerik:RadGrid> 

     <asp:Button ID="Button1" runat="server" OnClientClick="return testclick();" /> 
    </form> 
</body> 
</html> 

.ASPX.CS

public partial class Forum : System.Web.UI.Page 
{ 

    protected void Page_Init(object source, System.EventArgs e) 
    { 



    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private void NewMethod() 
    { 
     DataTable dt = new DataTable(); 

     dt.Columns.Add("ID", typeof(int)); 
     dt.Columns.Add("Name", typeof(string)); 
     dt.Columns.Add("Custom1", typeof(string)); 

     dt.Rows.Add(1, "name1", "custom1"); 
     dt.Rows.Add(2, "name2", "custom2"); 
     dt.Rows.Add(3, "name3", "Radgrid1_" + DateTime.Now.ToString()); 

     RadGrid1.DataSource = dt; 
     RadGrid1.DataBind(); 
    } 

    private void NewMethod2() 
    { 
     DataTable dt = new DataTable(); 

     dt.Columns.Add("ID", typeof(int)); 
     dt.Columns.Add("Name", typeof(string)); 
     dt.Columns.Add("Custom1", typeof(string)); 

     dt.Rows.Add(1, "name1", "custom1"); 
     dt.Rows.Add(2, "name2", "custom2"); 
     dt.Rows.Add(3, "name3", "Radgrid2_" + DateTime.Now.ToString()); 

     RadGrid2.DataSource = dt; 
     RadGrid2.DataBind(); 
    } 

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e) 
    { 
     if (e.Argument == "RadGrid1") 
     { 
      NewMethod(); 
     } 
     else if (e.Argument == "RadGrid2") 
     { 
      Thread.Sleep(5000); 
      NewMethod2(); 
     } 
    } 
} 

Позвольте мне знать, если какой-либо интерес.

Спасибо, Jayesh Goyani

+0

О, спасибо большое! Просто он отлично работает! – user1820686

Смежные вопросы