2011-08-25 78 views
1

让我们直接去解决这个问题。Telerik RadGrid + RadAjaxManager

我有两个gridview从其中一个生成数据源到另一个。两个gridviews都能够编辑项目(行),但编辑只能在第一个gridview(为另一个gridview生成数据的那个)中工作,当我点击第二个gridview中的编辑时什么都不会发生。我一直在网上搜索一段时间,并且(我相信)发现我需要的是AJAX Manager。

我已经检查过几个示例/来自Telerik网站的演示,但我仍然不确定如何在第二个gridview工作中进行编辑。当我在第二个gridview中单击“编辑”按钮时,根本没有任何反应。

两个gridviews里面都有编辑表单,两个gridview的编辑表单类型都是“WebUserControl”。

目前RadAjaxManager看起来是这样的:

<telerik:RadAjaxManager ID="ramAsseti" runat="server"> 
    <AjaxSettings> 
     <telerik:AjaxSetting AjaxControlID="gvKontakti"> 
      <UpdatedControls> 
       <telerik:AjaxUpdatedControl ControlID="gvAsseti" /> 
      </UpdatedControls> 
     </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManager> 

有人能帮助我一些建议。任何帮助,将不胜感激。

编辑:在此期间,我已经添加了一个更多的RadGrid和更新的RadAjaxManager,我得到的是前两个RadGrids的工作(通过“工作”我的意思是我可以单击编辑和UserControls显示),但最后一个不起作用。出于某种奇怪的原因删除功能确实工作在最后一个RadGrid(gvAsseti)中。

下面是代码(跳过绑定列,因为他们工作的优良):

<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
</telerik:RadScriptManager> 
<telerik:RadAjaxManager ID="ramAsseti" runat="server"> 
    <AjaxSettings> 
     <telerik:AjaxSetting AjaxControlID="gvTvrtke"> 
      <UpdatedControls> 
       <telerik:AjaxUpdatedControl ControlID="gvTvrtke" /> 
       <telerik:AjaxUpdatedControl ControlID="gvKontakti" /> 
       <telerik:AjaxUpdatedControl ControlID="gvAsseti" /> 
      </UpdatedControls> 
     </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManager> 
<telerik:RadGrid ID="gvTvrtke" runat="server" AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" CellSpacing="0" GridLines="None" OnNeedDataSource="gvTvrtke_NeedDataSource" 
    OnItemCommand="gvTvrtke_ItemCommand"> 
    <MasterTableView DataKeyNames="idFirma" CommandItemDisplay="TopAndBottom" InsertItemPageIndexAction="ShowItemOnCurrentPage"> 
     <CommandItemSettings AddNewRecordText="Dodaj novu tvrtku" RefreshText="Osvježi" /> 
     <Columns> 
      <telerik:GridButtonColumn UniqueName="ShowAssetsColumn" ButtonType="LinkButton" DataTextFormatString="Kontakti" 
       DataTextField="idTvrtka" CommandName="ShowContacts"> 
      </telerik:GridButtonColumn> 
      <telerik:GridBoundColumn UniqueName="Naziv" DataField="Naziv" HeaderText="Naziv"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="OIB" HeaderText="OIB" DataField="OIB"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Tel1" HeaderText="Telefon 1" DataField="Tel1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Tel2" HeaderText="Telefon 2" DataField="Tel2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Fax" HeaderText="Fax" DataField="Fax"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Mob1" HeaderText="Mobitel 1" DataField="Mob1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Mob2" HeaderText="Mobitel 2" DataField="Mob2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Email1" HeaderText="E-mail 1" DataField="Email1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Email2" HeaderText="E-mail 2" DataField="Email2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Adresa1" HeaderText="Adresa" DataField="Adresa1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Web" HeaderText="Web" DataField="Web"> 
      </telerik:GridBoundColumn> 
      <telerik:GridCheckBoxColumn UniqueName="Aktivan" HeaderText="Aktivan" DataField="Aktivan"> 
      </telerik:GridCheckBoxColumn> 
      <telerik:GridEditCommandColumn UniqueName="EditCommandColumn"> 
      </telerik:GridEditCommandColumn> 
      <telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete" 
       ConfirmDialogType="RadWindow" ConfirmText="Brisanje tvrtke!" /> 
     </Columns> 
     <EditFormSettings UserControlName="UserControls/TvrtkaUserControl.ascx" EditFormType="WebUserControl"> 
      <EditColumn UniqueName="EditCommandColumn1"> 
      </EditColumn> 
     </EditFormSettings> 
    </MasterTableView> 
</telerik:RadGrid> 
<telerik:RadGrid ID="gvKontakti" runat="server" AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" CellSpacing="0" GridLines="None" Skin="Default" OnNeedDataSource="gvKontakti_NeedDataSource" 
    OnDeleteCommand="gvKontakti_DeleteCommand" OnInsertCommand="gvKontakti_InsertCommand" 
    OnPreRender="gvKontakti_PreRender" OnUpdateCommand="gvKontakti_UpdateCommand" 
    OnItemCommand="gvKontakti_ItemCommand"> 
    <MasterTableView DataKeyNames="idKontakt" CommandItemDisplay="TopAndBottom" InsertItemPageIndexAction="ShowItemOnCurrentPage"> 
     <CommandItemSettings AddNewRecordText="Dodaj novi kontakt" RefreshText="Osvježi" /> 
     <Columns> 
      <telerik:GridButtonColumn UniqueName="ShowAssetsColumn" ButtonType="LinkButton" DataTextFormatString="Asseti" 
       DataTextField="idKontakt" CommandName="ShowAssets"> 
      </telerik:GridButtonColumn> 
      <telerik:GridBoundColumn UniqueName="Kontakt" DataField="Naziv" HeaderText="Kontakt"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Funkcija" HeaderText="Funkcija" DataField="Funkcija"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Tel1" HeaderText="Telefon 1" DataField="Tel1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Tel2" HeaderText="Telefon 2" DataField="Tel2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Mob1" HeaderText="Mobitel 1" DataField="Mob1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Mob2" HeaderText="Mobitel 2" DataField="Mob2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Email1" HeaderText="E-mail 1" DataField="Email1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Email2" HeaderText="E-mail 2" DataField="Email2"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Fax" HeaderText="Fax" DataField="Fax"> 
      </telerik:GridBoundColumn> 
      <telerik:GridCheckBoxColumn UniqueName="Aktivan" HeaderText="Aktivan" DataField="Aktivan"> 
      </telerik:GridCheckBoxColumn> 
      <telerik:GridEditCommandColumn UniqueName="EditCommandColumn"> 
      </telerik:GridEditCommandColumn> 
      <telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete" 
       ConfirmDialogType="RadWindow" ConfirmText="Brisanje kontakta!" /> 
     </Columns> 
     <EditFormSettings UserControlName="UserControls/KontaktUserControl.ascx" EditFormType="WebUserControl"> 
      <EditColumn UniqueName="EditCommandColumn1"> 
      </EditColumn> 
     </EditFormSettings> 
    </MasterTableView> 
</telerik:RadGrid> 
<telerik:RadGrid ID="gvAsseti" runat="server" OnNeedDataSource="gvAsseti_NeedDataSource" 
    AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellSpacing="0" 
    GridLines="None" ondeletecommand="gvAsseti_DeleteCommand" 
    oninsertcommand="gvAsseti_InsertCommand" 
    onupdatecommand="gvAsseti_UpdateCommand"> 
    <MasterTableView DataKeyNames="idAsset" CommandItemDisplay="TopAndBottom" InsertItemPageIndexAction="ShowItemOnCurrentPage"> 
     <CommandItemSettings AddNewRecordText="Dodaj novi asset" RefreshText="Prikaži sve assete" /> 
     <Columns> 
      <telerik:GridBoundColumn UniqueName="Naziv" DataField="Naziv" HeaderText="Naziv"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Kod1" HeaderText="Kod 1" DataField="Kod1"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Kod2" HeaderText="Kod 2" DataField="Kod"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="DatumGarancije" HeaderText="Datum garancije" 
       DataField="DatumGarancije"> 
      </telerik:GridBoundColumn> 
      <telerik:GridCheckBoxColumn UniqueName="Aktivan" HeaderText="Aktivan" DataField="Aktivan"> 
      </telerik:GridCheckBoxColumn> 
      <telerik:GridEditCommandColumn UniqueName="EditCommandColumn"> 
      </telerik:GridEditCommandColumn> 
      <telerik:GridButtonColumn UniqueName="DeleteColumn" Text="Delete" CommandName="Delete" 
       ConfirmDialogType="RadWindow" ConfirmText="Brisanje asseta!" /> 
     </Columns> 
     <EditFormSettings UserControlName="UserControls/AssetUserControl.ascx" EditFormType="WebUserControl"> 
      <EditColumn UniqueName="EditCommandColumn1"> 
      </EditColumn> 
     </EditFormSettings> 
    </MasterTableView> 
</telerik:RadGrid> 

回答

6

我认为,如果你只需要添加gvAsseti到AJAX设置这样的,它应该很好地工作:

取而代之的是:

<telerik:RadAjaxManager ID="ramAsseti" runat="server"> 
    <AjaxSettings> 
     <telerik:AjaxSetting AjaxControlID="gvKontakti"> 
      <UpdatedControls> 
       <!-- DON'T PUT THEM HERE --> 
      </UpdatedControls> 
     </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManager> 

做到这一点(请注意有是AjaxSetting每个网格):

<telerik:RadAjaxManager ID="ramAsseti" runat="server"> 
    <AjaxSettings> 
     <telerik:AjaxSetting AjaxControlID="gvKontakti" /> 
     <telerik:AjaxSetting AjaxControlID="gvAsseti" /> 
     <telerik:AjaxSetting AjaxControlID="gvTvrtke" /> 
    </AjaxSettings> 
</telerik:RadAjaxManager> 

另一种选择是使用RadAjaxPanel,并把所有的网格放在里面。这将确保一切都是AJAX:

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> 

    <telerik:RadGrid ... > 

    <telerik:Radgrid ... > 

    <telerik:RadGrid ... > 

</telerik:RadAjaxPanel> 
+0

不幸的是它仍然是一样的。我已经发布了代码更新,所以如果你能看看我会很感激。 –

+0

@Hrvach:不要将其他网格放在UpdatedControls部分。像上面一样,将每个网格添加为自己的AjaxSetting。 –

+0

谢谢!你救了我! ;) –