Hi,
I am trying to add items to a toolbar dynamically per need - the idea is that each page can have a set of "action buttons" which may differ per page so the toolbar need to be loaded dynamically. The dynamical loading of the same items works but when attempting to add new items on a postback the new item isn't displayed in the toolbar.
The dynamic loading of the toolbar is done in the OnInit event and the items are added on each postback (I don't use IsPostback). The toolbar is wrapped in an ASP.NET UpdatePanel. I also do call .Update() to make sure the UpdatePanel content is updated.
I've tried without the UpdatePanel either just to see but neither of them worked.
Is there any way to actually add items in a dynamic fashion?
Update
I donwloaded the latest Telerik controls to see if this has been fixed as i was using an older version od the Rad controls.
here is my code
and the code behind C#:
I've tested this with the RadAjaxManager and with the ASP.NET UpdatePanel getting the same result. Also tried to load the Toolbar controls from OnInit and Page_Load with a subtle change in the behaviour but both with a bug.
I want to be able to maintain the DropDownList between postbacks and also be able to dynamically add/remove Toolbar items (DropDownList, ToolbarButtons you name it) between postbacks.
I was thinking to use the RadToolBarDropDown instead of the ASP.NET DropDownList but the Telerik version doesn't seem to have certain behaviours as the ASP.NET version has built in, ie:
1. when a button is clicked in the DropDown the clicked item is not set to the DropDown.Text attribute (should be easy to do through javascript but still is a kind of fix needed) - it may be a design decision but still
2. cannot set a default DropDown item, say if I want to have on page load to have item 2 to be "selected/clicked". There seems to be a DropDown.Text attribute but still no Value/CommandArgument or such attribute holding the "clicked" button's value.
I am trying to add items to a toolbar dynamically per need - the idea is that each page can have a set of "action buttons" which may differ per page so the toolbar need to be loaded dynamically. The dynamical loading of the same items works but when attempting to add new items on a postback the new item isn't displayed in the toolbar.
The dynamic loading of the toolbar is done in the OnInit event and the items are added on each postback (I don't use IsPostback). The toolbar is wrapped in an ASP.NET UpdatePanel. I also do call .Update() to make sure the UpdatePanel content is updated.
I've tried without the UpdatePanel either just to see but neither of them worked.
Is there any way to actually add items in a dynamic fashion?
Update
I donwloaded the latest Telerik controls to see if this has been fixed as i was using an older version od the Rad controls.
here is my code
<
form
id
=
"form1"
runat
=
"server"
>
<
tl:RadScriptManager
ID
=
"rsm1"
runat
=
"server"
></
tl:RadScriptManager
>
<
asp:UpdatePanel
ID
=
"up1"
runat
=
"server"
UpdateMode
=
"Conditional"
>
<
ContentTemplate
>
<
asp:Label
ID
=
"lb1"
runat
=
"server"
></
asp:Label
>
<
tl:RadToolBar
ID
=
"Toolbar1"
runat
=
"server"
AutoPostBack
=
"true"
>
</
tl:RadToolBar
>
<
asp:Button
ID
=
"bt1"
runat
=
"server"
Text
=
"submit"
OnClick
=
"bt1_Click"
/>
</
ContentTemplate
>
</
asp:UpdatePanel
>
<%--<
tl:RadAjaxManager
ID
=
"am1"
runat
=
"server"
>
<
AjaxSettings
>
<
tl:AjaxSetting
AjaxControlID
=
"Toolbar1"
>
<
UpdatedControls
>
<
tl:AjaxUpdatedControl
ControlID
=
"Toolbar1"
/>
<
tl:AjaxUpdatedControl
ControlID
=
"lb1"
/>
</
UpdatedControls
>
</
tl:AjaxSetting
>
<
tl:AjaxSetting
AjaxControlID
=
"bt1"
>
<
UpdatedControls
>
<
tl:AjaxUpdatedControl
ControlID
=
"Toolbar1"
/>
<
tl:AjaxUpdatedControl
ControlID
=
"lb1"
/>
</
UpdatedControls
>
</
tl:AjaxSetting
>
</
AjaxSettings
>
</
tl:RadAjaxManager
>--%>
</
form
>
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
//PopulateToolbar();
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
PopulateToolbar();
Toolbar1.ButtonClick +=
new
RadToolBarEventHandler(Toolbar1_ButtonClick);
}
public
void
PopulateToolbar()
{
RadToolBarButton button;
DropDownList ddl;
Toolbar1.Items.Clear();
Toolbar1.AutoPostBack =
true
;
button =
new
RadToolBarButton();
ddl =
new
DropDownList();
ddl.ID =
"ddl1"
;
ddl.Items.Add(
new
ListItem(
"One"
));
ddl.Items.Add(
new
ListItem(
"Two"
));
ddl.Items.Add(
new
ListItem(
"Three"
));
ddl.AutoPostBack =
true
;
ddl.SelectedIndexChanged +=
new
EventHandler(ddl_SelectedIndexChanged);
button.Controls.Add(ddl);
//
Toolbar1.Items.Add(button);
button =
new
RadToolBarButton();
button.Text =
"Refund"
;
button.CommandName =
"action"
;
button.CommandArgument =
"refund"
;
Toolbar1.Items.Add(button);
}
protected
void
ddl_SelectedIndexChanged(
object
sender, EventArgs e)
{
DropDownList ddl;
string
szValue;
ddl = sender
as
DropDownList;
szValue = ddl.SelectedValue;
lb1.Text =
"ddl value changed: "
+ szValue;
}
protected
void
bt1_Click(
object
sender, EventArgs e)
{
RadToolBarButton button;
DropDownList ddl;
button =
new
RadToolBarButton();
button.Text =
"Void"
;
button.CommandArgument =
"void"
;
button.CommandName =
"action"
;
//
Toolbar1.Items.Add(button);
}
protected
void
Toolbar1_ButtonClick(
object
sender, RadToolBarEventArgs e)
{
lb1.Text = e.Item.Text +
" clicked"
;
}
I've tested this with the RadAjaxManager and with the ASP.NET UpdatePanel getting the same result. Also tried to load the Toolbar controls from OnInit and Page_Load with a subtle change in the behaviour but both with a bug.
I want to be able to maintain the DropDownList between postbacks and also be able to dynamically add/remove Toolbar items (DropDownList, ToolbarButtons you name it) between postbacks.
I was thinking to use the RadToolBarDropDown instead of the ASP.NET DropDownList but the Telerik version doesn't seem to have certain behaviours as the ASP.NET version has built in, ie:
1. when a button is clicked in the DropDown the clicked item is not set to the DropDown.Text attribute (should be easy to do through javascript but still is a kind of fix needed) - it may be a design decision but still
2. cannot set a default DropDown item, say if I want to have on page load to have item 2 to be "selected/clicked". There seems to be a DropDown.Text attribute but still no Value/CommandArgument or such attribute holding the "clicked" button's value.