2012-07-21 66 views
0

我無法管理更新usercontrol中的radgrid。我的ajaxmanager是在mainform中。更新在用戶控件中的radgrid

我的usercontol是TaniUC 我設法從usercontol激發ajaxrequest事件。但我無法更新radgrid。我使用TaniEkle(ID),它是我的usercontol中的一個公共func,向我的radgrid添加一行。 它在屏幕上添加但不更新。

Form.aspx

<telerik:RadAjaxManager ID="RadAjaxManager1" OnAjaxRequest="RadAjaxManager1_AjaxRequest" 
    runat="server"> 
    <AjaxSettings>    


     <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> 
      <UpdatedControls> 
       <telerik:AjaxUpdatedControl ControlID="grdHastalar" LoadingPanelID="RadAjaxLoadingPanel1" /> 
      </UpdatedControls> 
     </telerik:AjaxSetting> 
     <telerik:AjaxSetting AjaxControlID="grdHastalar" EventName="OnRowClick" > 
      <UpdatedControls> 
       <telerik:AjaxUpdatedControl ControlID="TaniUC" LoadingPanelID="RadAjaxLoadingPanel1" /> 
      </UpdatedControls> 
     </AjaxSettings> 

Form.aspx.cs

protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e) 
    { 
     if(e.Argument=="taniekle") 
     { 
      int ID = DataReader.GetInt32(Request.Form["grdTanilarDClickedRowIndex"]); 
      if (ID > 0) 
      { 
       ucpTani.TaniEkle(ID); 
      } 
      return; 
     } 

}

TaniUc.ascx.cs(用戶控件)

private List<HBS_TANI> seciliTanilarList 
    { 
     get 
     { 
      return (List<HBS_TANI>)ViewState["seciliTanilarList"]; 
     } 
     set 
     { 
      ViewState["seciliTanilarList"] = value; 
     } 
    } 
public void TaniEkle(int id) 
    { 
     var lst = seciliTanilarList.Where(k => k.ICD10_ID == id).ToList(); 
     if (lst.Count() > 0) 
     { 
      return; 
     } 
     else 
     { 
      HBS_TANI entity = new HBS_TANI(); 
      entity.TUR_ID = 1; 
      entity.STATUS = true; 
      bllTakipTani.Add(entity); 

      seciliTanilarList.Add(entity); 
      grdSeciliTanilar.DataSource = seciliTanilarList; 
     } 
    } 

回答

0

我找到了答案。我寫了usercontrol的Id是錯誤的。將它添加到updatecontrol解決我的問題。

<telerik:AjaxUpdatedControl ControlID="ucpTani" LoadingPanelID="RadAjaxLoadingPanel1" />