<table>
<tr><td><asp:button runat="server" id="Button1" text="save dashboard" />
<br/><br/></td></tr>
<telerik:raddocklayout runat="server" enableviewstate="false" id="RadDockLayout1" onloaddocklayout="RadDockLayout1_LoadDockLayout" Skin="Web20"
onsavedocklayout="RadDockLayout1_SaveDockLayout" storelayoutinviewstate="false" >
<tr>
<td valign="top">
<telerik:raddockzone runat="server" id="RadDockZone1" width="402px" min-height="200px">
</telerik:raddockzone>
</td>
<td valign="top">
<telerik:raddockzone runat="server" id="RadDockZone2" width="402px" min-height="200px">
</telerik:raddockzone>
</td></tr>
<tr><td colspan="2"><telerik:raddockzone runat="server" id="RadDockZone3" Width="820px" MinHeight="200px" >
</telerik:raddockzone></td></tr>
</table>
</telerik:raddocklayout>
private void Page_Load(object sender, System.EventArgs e)
{
}
private List<DockState> CurrentDockStates
{
get
{
//Get saved state string from the database - set it to dockState variable for example
string dockStatesFromDB = "";
string loginID = "xxx";
string loginPassword = "xxx";
using (XcendaDC1DataContext context = new XcendaDC1DataContext())
{
var users = from u in context.tbUsers
where (u.U_userLogin.Contains(loginID) && u.U_userPassword.Contains(loginPassword))
select u;
var x = users.FirstOrDefault();
if (x != null)
{
dockStatesFromDB = x.U_dockState;
}
}
List<DockState> _currentDockStates = new List<DockState>();
string[] stringStates = dockStatesFromDB.Split('|');
foreach (string stringState in stringStates)
{
if (stringState.Trim() != string.Empty)
{
_currentDockStates.Add(
DockState.Deserialize(stringState));
}
}
return _currentDockStates;
}
}
protected void Page_Init(object sender, EventArgs e)
{
int docksCount = CurrentDockStates.Count;
// raddock1
RadDock raddock1 = new RadDock();
raddock1.ID =
string.Format("RadDock{0}", docksCount);
raddock1.Title =
"Products";
// raddock1.Text = string.Format("Added at {0}", DateTime.Now);
raddock1.UniqueName =
Guid.NewGuid().ToString();
raddock1.Width =
Unit.Pixel(300);
raddock1.Skin =
"Web20";
RadGrid gv = new RadGrid();
ArrayList arrListProducts = new ArrayList();
arrListProducts.Add(
"product 1");
arrListProducts.Add(
"product 2");
arrListProducts.Add(
"product 3");
arrListProducts.Add(
"product 4");
arrListProducts.Add(
"product 5");
arrListProducts.Add(
"product 6");
arrListProducts.Add(
"product 7");
gv.DataSource = arrListProducts;
gv.DataBind();
raddock1.ContentContainer.Controls.Add(gv);
raddock1.Commands.Add(
new DockCloseCommand());
raddock1.Commands.Add(
new DockExpandCollapseCommand());
RadDockZone1.Controls.Add(raddock1);
}
protected void RadDockLayout1_LoadDockLayout(object sender, DockLayoutEventArgs e)
{
//Populate the event args with the state information. The RadDockLayout control
// will automatically move the docks according that information.
foreach (DockState state in CurrentDockStates)
{
e.Positions[state.UniqueName] = state.DockZoneID;
e.Indices[state.UniqueName] = state.Index;
}
}
protected void RadDockLayout1_SaveDockLayout(object sender, DockLayoutEventArgs e)
{
List<DockState> stateList = RadDockLayout1.GetRegisteredDocksState();
StringBuilder serializedList = new StringBuilder();
int i = 0;
while (i < stateList.Count)
{
serializedList.Append(stateList[i].ToString());
serializedList.Append(
"|");
i++;
}
string dockState = serializedList.ToString();
if (dockState.Trim() != String.Empty)
{
string loginID = "myID";
string loginPassword = "myPassword";
using (XcendaDC1DataContext context = new XcendaDC1DataContext())
{
var users = from u in context.tbUsers
where (u.U_userLogin.Contains(loginID) && u.U_userPassword.Contains(loginPassword))
select u;
var x = users.FirstOrDefault();
if (x != null)
{
x.U_dockState = dockState;
context.SubmitChanges();
}
}
}
}
One of our customers reported an error in their solution(using RTE). Sometimes when opening their content editor, the body content is missing and a __#!$Novalue$!#__ is displayed instead. See the screenshot( http://screencast.com/t/EoG3tRK2Y ).
Many thanks for your answer.
Best regards,
Anton.
<
telerik:RadAjaxPanel
runat
=
"server"
ID
=
"rapEntryPurchase"
ClientEvents-OnRequestStart
=
"onRequestStart"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
//RadComboBox
<
telerik:RadAjaxPanel
runat
=
"server"
ID
=
"rapPurchase"
ClientEvents-OnRequestStart
=
"onRequestStart"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
<
asp:Panel
ID
=
"pnlPurchase"
runat
=
"server"
Width
=
"100%"
ScrollBars
=
"Horizontal"
BackColor
=
"Blue"
>
//RadGrid1
</
asp:Panel
>
<
telerik:RadAjaxPanel
runat
=
"server"
ID
=
"rapPurchaseLines"
ClientEvents-OnRequestStart
=
"onRequestStart"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
<
asp:Panel
ID
=
"pnlPurchaseLine"
runat
=
"server"
Width
=
"100%"
ScrollBars
=
"auto"
>
//RadGrid2
</
asp:Panel
>
</
telerik:RadAjaxPanel
>
</
telerik:RadAjaxPanel
>
<
telerik:RadAjaxPanel
>
<
telerik:RadEditor
ID
=
"RadEditor1"
runat
=
"server"
>
<
ContextMenus
>
<
telerik:EditorContextMenu
TagName
=
"INPUT"
>
<
telerik:EditorTool
name
=
"fieldModifica"
Text
=
"Modifica proprietà ..."
/>
</
telerik:EditorContextMenu
>
<
telerik:EditorContextMenu
TagName
=
"SELECT"
>
<
telerik:EditorTool
name
=
"selectModifica"
Text
=
"Modifica proprietà ..."
/>
</
telerik:EditorContextMenu
>
</
ContextMenus
>
<
Content
>
<
select
id
=
"aSelect"
><
option
value
=
"first"
>first</
option
><
option
value
=
"second"
>second</
option
></
select
><
br
/>
<
input
type
=
"text"
id
=
"anInputBox"
value
=
"an input box"
></
input
>
</
Content
>
</
telerik:RadEditor
>
<
script
type
=
"text/javascript"
>
//
<![CDATA[
function ModifyFieldProperty(commandName, editor, args, tagname, fieldtype) {
var elem = editor.getSelectedElement(); //returns the selected element.
alert("elem.tagName: " + elem.tagName + " - tagname: " + tagname);
}
Telerik.Web.UI.Editor.CommandList["fieldModifica"] = function(commandName, editor, args) {
ModifyFieldProperty(commandName, editor, args, "INPUT", "text");
};
Telerik.Web.UI.Editor.CommandList["selectModifica"] = function(commandName, editor, args) {
ModifyFieldProperty(commandName, editor, args, "SELECT", "");
};
//]]>
</
script
>