2011-08-25 76 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

謝謝!你救了我! ;) –