Я новичок в разработке модулей dotnetnuke.
Настройки: dotnetnuke 7 + модуль christoc, управление телериком ajax ui: Q2 выпуск 2. Я зарегистрировал пользовательский элемент управления Patientupdate.ascx в DNN. Внутри него у меня есть несколько элементов управления, то есть radgrid (ResultaatGrid) и radwindow, также как пользовательский элемент управления (но не зарегистрированный в DNN) с именем COVUserControl. radwindow вызывается внутри radgrid в режиме formit при нажатии кнопки.
фрагмент кода для radwindow (внутри файла пациентаupdate.ascx)
В radwindow я поместил пользовательский элемент управления (COVUserControl), а внутри пользовательского элемента управления я определил radgrid.
<telerik:RadWindow ID="COVWindow" Title="Editing record" Width="270"
Height="540" VisibleOnPageLoad="false" Behaviors="Resize, Minimize, Close, Pin, Maximize, Move"
Left="610" EnableShadow="true" runat="server" OnClientClose="refreshGrid" Modal="true">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server">
<COVUC:COVUserControl runat="server" ID="COVUCID"/>
</asp:Panel>
</ContentTemplate>
</telerik:RadWindow>
В шаблоне редактирования у меня есть кнопка с именем (в файле пациентаupdate.ascx) и в коде пациентаupdate.ascx.cs.
в команде ResultaatGrid_Item у меня есть следующий код:
protected void ResultaatGrid_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "COV")
{
GridEditableItem editedItem = e.Item as GridEditableItem;
string pCperID = editedItem.GetDataKeyValue("cpersoon_id").ToString();
COVWindow.Width = 500;
COVWindow.Height = 250;
COVUserControl COVUC1 = COVWindow.ContentContainer.FindControl("COVUCID") as COVUserControl;
COVUC1.cPersoonID = pCperID;
RadGrid COVGrid = COVUC1.FindControl("COVGrid") as RadGrid;
string script = "function f(){$find(\"" + COVWindow.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(this, this.GetType(), "key", script, true);
COVGrid.Rebind();
}
}
Проблема в том, что radwindow не всплывает. (Я проверил всплывающее окно в host -> extension-> и разрешил всплывающие окна для модуля).
При отладке (прикреплении) я вижу, что Covgrid.rebind запускается, потому что он запускает источник данных radgrid, необходимый для сетки внутри COVUserControl.
Тот же код работает, всплывающее окно radwindow, когда НЕ модуль dotnetnuke. (просто пациентаupdate.aspx).
Я думаю, что следующие строки кода не срабатывают:
string script = "function f(){$find(\"" + COVWindow.ClientID + "\").show();
Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(this, this.GetType(), "key", script, true);