Telerik RadGrid + RadAjaxManager
Давайте сразу перейдем к проблеме.
У меня есть два вида сетки, из которых один генерирует источник данных для другого. Оба вида сетки имеют возможность редактировать элемент (строку), но редактирование работает только в первом виде сетки (тот, который генерирует данные для другого), когда я нажимаю на редактировать во втором виде сетки, ничего не происходит. Я некоторое время искал в Интернете и (я считаю) обнаружил, что мне нужен AJAX Manager.
Я проверил несколько примеров / демонстраций с сайта Telerik, но я все еще не уверен, как сделать редактирование во втором 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 работают (под "работой" я имею в виду, что я могу нажать Edit, и отображаются UserControls), но последний не работает, По какой-то странной причине функция Delete работает в последнем 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>
1 ответ
Я думаю, что если вы просто добавите 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>