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();
}