or
| dock.Attributes.Add("OnDockPositionChanged", "RadDock_DockPositionChanged") |
| dock.OnClientDockPositionChanged = "RadDock_DockPositionChanged" |
| Protected Sub RadDock_DockPositionChanged(ByVal sender As Object, ByVal e As Telerik.Web.UI.DockPositionChangedEventArgs) |
| Dim dock As RadDock |
| dock = DirectCast(sender, RadDock) |
| If dock.DockZoneID <> e.DockZoneID Then |
| ... |
Hi,
I try to generate an OrgChart dynamically, for do that, I need to add actions to the orgChart item (by RadButton).
In my first POC, I try the programm below.
<%@ Control language="C#" Inherits="DotNetNuke.Modules.Quanteam.ContractModule.View" AutoEventWireup="false" Codebehind="View.ascx.cs" %><%@ Register assembly="System.Web.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" namespace="System.Web.UI.WebControls" tagprefix="asp" %><%@ Register TagPrefix="telerik" Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" %><asp:MultiView ID="multiView" runat="server"> <asp:View ID="ViewContractDetail" runat="server"> <telerik:RadOrgChart runat="server" ID="radOrgChart"> <Nodes> <telerik:OrgChartNode> <ItemTemplate> <div style="background-color: Red; height: 80px; width: 180px;"> <telerik:RadButton ID="TestBtnOrgChart" Text="click : 0" runat="server" OnClick="onClick_Handler" ValidationGroup="ParamValidationGroup" ButtonType="LinkButton" BorderStyle="None"> <Icon PrimaryIconUrl="~/images/Add.gif" PrimaryIconLeft="5px" /> </telerik:RadButton> </div> </ItemTemplate> <GroupItems> <telerik:OrgChartGroupItem Text="Click for Test" /> </GroupItems> </telerik:OrgChartNode> </telerik:RadOrgChart> </asp:View></asp:MultiView>
private void Page_Load(object sender, System.EventArgs e) { try { System.Web.UI.WebControls.View view = FindControl("ViewContractDetail") as System.Web.UI.WebControls.View; multiView.SetActiveView(view); //---------------------------------------------------- // RadOrgChart //---------------------------------------------------- var nodeContract = new OrgChartNode(); radOrgChart.Nodes.Add(nodeContract); OrgChartGroupItem topContract = new OrgChartGroupItem() { Template = new MyTemplate("btnOrgChart1") }; nodeContract.GroupItems.Add(topContract); var node = new OrgChartNode(); topContract.Node.Nodes.Add(node); OrgChartGroupItem missionNode = new OrgChartGroupItem() { Template = new MyTemplate("btnOrgChart2", onClick_Handler) }; node.GroupItems.Add(missionNode); //---------------------------------------------------- // RadButton //---------------------------------------------------- RadButton radBtn = new RadButton(); radBtn.ID = "btn_1"; radBtn.Text = string.Format("click : {0}", 0); radBtn.Click += onClick_Handler; view.Controls.Add(radBtn); } catch (Exception exc) //Module failed to load { Exceptions.ProcessModuleLoadException(this, exc); } } class MyTemplate : ITemplate { private string _id; private System.EventHandler _onClick; public MyTemplate(string id) { _id = id; _onClick = onClick_Handler; } public MyTemplate(string id, System.EventHandler onClick) { _id = id; _onClick = onClick; } public void InstantiateIn(Control container) { RadButton radBtn = new RadButton(); radBtn.ID = _id; radBtn.Text = string.Format("click {1} : {0}", 0, _id); radBtn.Click += _onClick; container.Controls.Add(radBtn); } protected void onClick_Handler(object sender, System.EventArgs e) { RadButton radBtn = sender as RadButton; radBtn.Text = string.Format("click {1} : {0}", Convert.ToInt32(radBtn.Text.Split(':')[1]) + 1, _id); } } protected void onClick_Handler(object sender, System.EventArgs e) { RadButton radBtn = sender as RadButton; string[] items = radBtn.Text.Split(':'); radBtn.Text = string.Format("{0} : {1}", items[0], Convert.ToInt32(items[1].Trim()) + 1); }
When I try this program, the button created into the OrgChart by API call the Page_Load handler, but not the associated click handler.
Even if the handler came from the view or from the custom ITemplate class.
The two buttons of control :
- generated with the ASX and inside of the OrgChart
- generated with the API and outside of OrgChart
works normally.
Why my two Button generated with API into the OrgChar seems to don't call the Click event.
For information, I begin on ASP.Net since few week.
Thanks for your help.

<telerik:RadAsyncUpload runat="server" ID="RadAsyncUpload1" AllowedFileExtensions="png" Width="100%" MaxFileSize="524288" OnFileUploaded="RadAsyncUpload1_FileUploaded" OnClientFileUploaded="fileUploaded" /><rad:RadGrid Skin="Office2007" runat="server" OnItemDataBound="gridAdd_ItemDataBound" AllowAutomaticDeletes="True" OnItemCommand="RadGrid1_ItemCommand" AllowAutomaticInserts="True" OnInsertCommand="gridAdd_InsertCommand" NoMasterRecordsText="No Files selected for this PO" OnDeleteCommand="gridAdd_ItemDeleted" AutoGenerateColumns="false" id="gridAdd" AllowPaging="true" PageSize="5" onneeddatasource="gridAdd_NeedDataSource"> <MasterTableView NoMasterRecordsText="No Files selected for this PO" EditMode="InPlace" AllowAutomaticUpdates="false" AllowAutomaticInserts="true" CommandItemDisplay="Bottom" DataKeyNames="ID,FileID, GVMXID" > <Columns> <rad:GridEditCommandColumn ButtonType="LinkButton" UniqueName="EditCommandColumn2"> <HeaderStyle Width="20px" /> </rad:GridEditCommandColumn> <rad:GridTemplateColumn HeaderText="File" > <ItemTemplate> <rad:RadComboBox Visible="false" CheckBoxes="true" OnDataBinding="comboFiles_DataBind" DataSourceID="odsFiles" Height="200" Skin="Vista" ID="comboFiles" Width="200" DataTextField="OriginalName" DataValueField="ID" runat="server"> </rad:RadComboBox> <asp:Label ID="lblFileName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FileName") %>'></asp:Label> </ItemTemplate> <ItemStyle Wrap="true" Width="100" HorizontalAlign="Center" /> <HeaderStyle ForeColor="#4e6ea4" HorizontalAlign="Center" Font-Bold="true" /> </rad:GridTemplateColumn> <rad:GridTemplateColumn HeaderText="TM" > <ItemTemplate> <rad:RadComboBox Visible="false" AppendDataBoundItems="true" Height="200" Skin="Vista" ID="comboTMs" DataSourceID="odsTMs" DataTextField="TMName" DataValueField="ID" runat="server"> </rad:RadComboBox> <asp:Label ID="lblTMName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.TMName") %>'></asp:Label> </ItemTemplate> <ItemStyle Wrap="true" Width="100" HorizontalAlign="left" /> <HeaderStyle ForeColor="#4e6ea4" HorizontalAlign="Center" Font-Bold="true" /> </rad:GridTemplateColumn> <rad:GridTemplateColumn HeaderText="Tag Settings" > <ItemTemplate> <table> <tr><td style="border:0px; min-width:150px;"> <asp:CheckBox Visible="false" onclick="toggle(this)" runat="server" Checked="true" ID="chkDefault" Text="Use Default Tag Settings" /> </td></tr> <tr><td style="border:0px;"> <asp:FileUpload Visible="false" runat="server" ClientIDMode="Static" ID="fileUpload" /> </td></tr> </table> <asp:Label ID="lblTagSettings" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.TagSettings") %>'></asp:Label> </ItemTemplate> <ItemStyle Wrap="true" Width="100" HorizontalAlign="Center" /> <HeaderStyle ForeColor="#4e6ea4" HorizontalAlign="Center" Font-Bold="true" /> </rad:GridTemplateColumn> <rad:GridButtonColumn ConfirmDialogType="RadWindow" ConfirmText="Are you sure you want to delete this file from PO?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteDiscount"> <HeaderStyle Width="20px" /> </rad:GridButtonColumn> </Columns> <CommandItemSettings ShowRefreshButton="false" AddNewRecordText="Add New Files" /> </MasterTableView> </rad:RadGrid>protected void gridAdd_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ gridAdd.DataSource = (List<POFilesInMemory>)Session["POFiles"]; }public class POFilesInMemory{ public int FileID { get; set; } public string FileName { get; set; } public int TMID { get; set; } public string TMName { get; set; } public string TagSettingsName { get; set; }}
<telerik:RadWindowManager ID="Radwindowmanager1" runat="server"> <Windows> <telerik:RadWindow runat="server" ID="winDetail" Width="400px" Height="400px" ReloadOnShow="true" ShowContentDuringLoad="false" Modal="True" Behaviors="None" VisibleTitlebar="true" VisibleStatusbar="false"> <ContentTemplate> <h3> Injury Details </h3> <asp:Label runat="server" ID="lblError"></asp:Label> <div class="modalForm"> <ol> <li> <label class="noFloatLabel"> Injury </label> <telerik:RadComboBox ID="ddlName" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlInjuryName_OnSelectedIndexChanged" /> <telerik:RadTextBox runat="server" ID="txtNewName"> </telerik:RadTextBox> </li> <li> <label class="noFloatLabel"> Specific Detail </label> <telerik:RadComboBox ID="ddSpecific" runat="server" /> <telerik:RadTextBox runat="server" ID="txtNewSpecific"> </telerik:RadTextBox> </li> </ol> </div> <br /> <asp:Button runat="server" ID="btnAddDetail" Text="Add" OnClick="btnAddDetail_Click" /> <asp:Button runat="server" ID="btnCancel" Text="Cancel" OnClick="btnCancel_Click" /> <asp:HiddenField runat="server" ID="hdnId" /> </ContentTemplate> </telerik:RadWindow> </Windows></telerik:RadWindowManager><telerik:RadAjaxManager runat="server" ID="aj1"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="ddlName"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="ddlSpecific" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="btnAddDetail"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="lblError" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManager>protected void btnAddDetail_Click(object sender, EventArgs e) { if ((ddlName.SelectedValue != string.Empty || txtNewName.Text != string.Empty) && (ddlSpecific.SelectedValue != string.Empty || txtNewSpecific.Text != string.Empty)) {//do processing if processing fails show error if not close window
string script = "function f(){Close(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(this, this.GetType(), "close", script, true);
} else { lblError.Text = "You must select a name and description"; } }function GetRadWindow() { var oWindow = null; if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz az well) return oWindow; } function Close() { GetRadWindow().close(); }<telerik:RadTextBox ID="rtbAddress" runat="server" Label="Address:" ToolTip="Search for an address" Width="300px" Columns="200">