Hi!
I have a self-referencing grid with custom CRUD operations (NeedDataSource and custom OnItemCommand events). It is made after this demo http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/selfreferencing/defaultcs.aspx and this article http://www.telerik.com/help/aspnet-ajax/grdselfreferencinghierarchy.html.
When i set the HierarchyDefaultExpanded to true, everything works fine, but I have a lot of data in my grid so I would like to collapse everything at the start. So, when I set the HierarchyDefaultExpanded to false, the grid is initially collapsed, but the edit form doesn't show on child items. The edit work only on the top level of the hierarchy.
This is my grid
The code behind is: (omitted some code that is not relevant)
Please help me to have my self-referencing grid initially collapsed and with working edit forms.
I have a self-referencing grid with custom CRUD operations (NeedDataSource and custom OnItemCommand events). It is made after this demo http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/selfreferencing/defaultcs.aspx and this article http://www.telerik.com/help/aspnet-ajax/grdselfreferencinghierarchy.html.
When i set the HierarchyDefaultExpanded to true, everything works fine, but I have a lot of data in my grid so I would like to collapse everything at the start. So, when I set the HierarchyDefaultExpanded to false, the grid is initially collapsed, but the edit form doesn't show on child items. The edit work only on the top level of the hierarchy.
This is my grid
<
telerik:RadGrid
ID
=
"RG_MENU_MenuItem"
runat
=
"server"
DataSourceID
=
"ods_MENU_MenuItem"
AutoGenerateColumns
=
"false"
AllowSorting
=
"false"
OnNeedDataSource
=
"RG_MENU_MenuItem_NeedDataSource"
OnColumnCreated
=
"RG_MENU_MenuItem_ColumnCreated"
OnItemDataBound
=
"RG_MENU_MenuItem_ItemDataBound"
OnItemCreated
=
"RG_MENU_MenuItem_ItemCreated"
OnItemCommand
=
"RG_MENU_MenuItem_ItemCommand"
OnInsertCommand
=
"RG_MENU_MenuItem_InsertCommand"
OnUpdateCommand
=
"RG_MENU_MenuItem_UpdateCommand"
OnDeleteCommand
=
"RG_MENU_MenuItem_DeleteCommand"
>
<
MasterTableView
HierarchyDefaultExpanded
=
"true"
HierarchyLoadMode
=
"Client"
AllowSorting
=
"false"
EditMode
=
"PopUp"
DataKeyNames
=
"MenuItemID, ParentItemID"
Width
=
"100%"
>
<
SelfHierarchySettings
ParentKeyName
=
"ParentItemID"
KeyName
=
"MenuItemID"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"MenuItemID"
HeaderText
=
"ID"
SortExpression
=
"MenuItemID"
UniqueName
=
"MenuItemID"
DataType
=
"System.Int64"
AllowFiltering
=
"false"
ReadOnly
=
"true"
>
<
HeaderStyle
CssClass
=
"rgHeader column0"
/>
<
ItemStyle
CssClass
=
"column0"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"AppDescription"
HeaderText
=
"App Description"
SortExpression
=
"AppDescription"
UniqueName
=
"AppDescription"
CurrentFilterFunction
=
"Contains"
AutoPostBackOnFilter
=
"true"
>
<
HeaderStyle
CssClass
=
"rgHeader column1"
/>
<
ItemStyle
CssClass
=
"column1"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"MenuInstanceID"
HeaderText
=
"Menu Instance"
SortExpression
=
"MenuInstanceID"
UniqueName
=
"MenuInstanceID"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"rcbMenuInstanceFilter"
runat
=
"server"
DataSourceID
=
"ods_MenuInstance"
DataTextField
=
"AppDescription"
DataValueField
=
"MenuInstanceID"
AllowCustomText
=
"true"
AppendDataBoundItems
=
"true"
Width
=
"100"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("MenuInstanceID").CurrentFilterValue %>'
OnClientSelectedIndexChanged="rcbMenuInstanceFilter_SelectedIndexChanged">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
""
Value
=
""
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"rsbMenuInstanceFilter"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function rcbMenuInstanceFilter_SelectedIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("MenuInstanceID", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("MenuInstance.AppDescription")%>
</
ItemTemplate
>
<
HeaderStyle
CssClass
=
"rgHeader column2"
/>
<
ItemStyle
CssClass
=
"column2"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"PageID"
HeaderText
=
"Page"
SortExpression
=
"PageID"
UniqueName
=
"PageID"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"rcbPageFilter"
runat
=
"server"
DataSourceID
=
"ods_Page"
DataTextField
=
"AppDescription"
DataValueField
=
"PageID"
AllowCustomText
=
"true"
AppendDataBoundItems
=
"true"
Width
=
"100"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("PageID").CurrentFilterValue %>'
OnClientSelectedIndexChanged="rcbPageFilter_SelectedIndexChanged">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
""
Value
=
""
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"rsbPageFilter"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function rcbPageFilter_SelectedIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("PageID", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("Page.AppDescription")%>
</
ItemTemplate
>
<
HeaderStyle
CssClass
=
"rgHeader column3"
/>
<
ItemStyle
CssClass
=
"column3"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"WebOrder"
HeaderText
=
"Web Order"
SortExpression
=
"WebOrder"
UniqueName
=
"WebOrder"
DataType
=
"System.Int32"
FilterControlWidth
=
"25px"
>
<
HeaderStyle
CssClass
=
"rgHeader column5"
/>
<
ItemStyle
CssClass
=
"column5"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"IsActive"
HeaderText
=
"Is Active"
SortExpression
=
"IsActive"
UniqueName
=
"IsActive"
DataType
=
"System.Boolean"
>
<
HeaderStyle
CssClass
=
"rgHeader column6"
/>
<
ItemStyle
CssClass
=
"column6"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"TimeStamp"
DataType
=
"System.DateTime"
HeaderText
=
"Time Stamp"
SortExpression
=
"TimeStamp"
UniqueName
=
"TimeStamp"
AllowFiltering
=
"false"
>
<
HeaderStyle
CssClass
=
"rgHeader column10"
/>
<
ItemStyle
CssClass
=
"column10"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
CommandName
=
"CustomEdit"
ButtonType
=
"ImageButton"
UniqueName
=
"EditColumn"
ImageUrl
=
"~/_Med_App/images/edit.gif"
>
<
HeaderStyle
CssClass
=
"rgHeader column11"
/>
<
ItemStyle
CssClass
=
"column11"
/>
</
telerik:GridButtonColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Jeste li sigurni da želite obrisati odabranu stavku?"
CommandName
=
"Delete"
ButtonType
=
"ImageButton"
UniqueName
=
"DeleteColumn"
>
<
HeaderStyle
CssClass
=
"rgHeader column12"
/>
<
ItemStyle
CssClass
=
"column12"
/>
</
telerik:GridButtonColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"SelectColumn"
AllowFiltering
=
"true"
Display
=
"false"
>
<
FilterTemplate
>
<
asp:CheckBox
ID
=
"cbxSelectAllForSync"
runat
=
"server"
AutoPostBack
=
"true"
OnCheckedChanged
=
"SelectAll_CheckedChanged"
/>
</
FilterTemplate
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"cbxSelectForSync"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderStyle
CssClass
=
"rgHeader column13"
/>
<
ItemStyle
CssClass
=
"column13"
/>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
EditColumn
UniqueName
=
"EditCommandColumn1"
></
EditColumn
>
<
FormTemplate
>
<
table
class
=
"edit-table-rad"
cellspacing
=
"2"
cellpadding
=
"1"
width
=
"100%"
border
=
"0"
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>MenuItemID:</
b
>
</
td
>
<
td
>
<%# Eval("MenuItemID").ToString()%>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>ParentItem:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadComboBox
ID
=
"rcbParentItemID"
runat
=
"server"
DataSourceID
=
"ods_MENU_ParentMenuItem"
DataTextField
=
"AppDescription"
DataValueField
=
"MenuItemID"
AppendDataBoundItems
=
"true"
AllowCustomText
=
"true"
Filter
=
"StartsWith"
Width
=
"350px"
>
<
Items
>
<
telerik:RadComboBoxItem
Text
=
""
Value
=
""
/>
</
Items
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Menu Instance:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadComboBox
ID
=
"rcbMenuInstanceID"
runat
=
"server"
DataSourceID
=
"ods_MenuInstance"
DataTextField
=
"AppDescription"
DataValueField
=
"MenuInstanceID"
AllowCustomText
=
"true"
Width
=
"350px"
>
</
telerik:RadComboBox
>
</
td
>
<
td
>
<
asp:RequiredFieldValidator
ID
=
"rfvMenuInstanceID"
runat
=
"server"
ControlToValidate
=
"rcbMenuInstanceID"
ErrorMessage
=
"Obavezan unos!"
ForeColor
=
"Red"
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Page:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadComboBox
ID
=
"rcbPageID"
runat
=
"server"
DataSourceID
=
"ods_Page"
DataTextField
=
"AppDescription"
DataValueField
=
"PageID"
AppendDataBoundItems
=
"True"
AllowCustomText
=
"true"
Width
=
"350px"
>
<
Items
>
<
telerik:RadComboBoxItem
Text
=
""
Value
=
""
/>
</
Items
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Menu Item Url:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadTextBox
ID
=
"txtMenuItemUrl"
runat
=
"server"
Width
=
"350px"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>App Description:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadTextBox
ID
=
"txtAppDescription"
runat
=
"server"
Width
=
"350px"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Web Order:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadNumericTextBox
ID
=
"rnbWebOrder"
runat
=
"server"
NumberFormat-DecimalDigits
=
"0"
Width
=
"350px"
/>
</
td
>
<
td
>
<
asp:RequiredFieldValidator
ID
=
"rfvWebOrder"
runat
=
"server"
ControlToValidate
=
"rnbWebOrder"
ErrorMessage
=
"Obavezan unos!"
ForeColor
=
"Red"
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Is Active:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
asp:CheckBox
ID
=
"chbIsActive"
runat
=
"server"
Checked
=
"false"
/>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
width
=
"200px"
>
<
b
>Priority Factor:</
b
>
</
td
>
<
td
width
=
"350px"
>
<
telerik:RadNumericTextBox
ID
=
"rnbPriorityFactor"
runat
=
"server"
NumberFormat-DecimalDigits
=
"0"
Width
=
"350px"
/>
</
td
>
<
td
>
<
asp:RequiredFieldValidator
ID
=
"rfvPriorityFactor"
runat
=
"server"
ControlToValidate
=
"rnbPriorityFactor"
ErrorMessage
=
"Obavezan unos!"
ForeColor
=
"Red"
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:Button
ID
=
"InsertUpdateButton"
runat
=
"server"
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'></
asp:Button
>
<
asp:Button
ID
=
"CancelButton"
runat
=
"server"
Text
=
"Cancel"
CausesValidation
=
"false"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
<
ClientSettings
AllowExpandCollapse
=
"true"
/>
</
telerik:RadGrid
>
The code behind is: (omitted some code that is not relevant)
using
System;
using
System.Collections;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
admin_bl;
using
admin_bo;
using
Telerik.Web.UI;
namespace
admin
{
public
partial
class
MENU_MenuItem_Hierarchy : bl_BasePage
{
#region "Properties"
private
string
_strAppMode =
string
.Empty;
private
Hashtable _htOdsValues;
private
bool
_isRowFound =
false
;
private
long
_lMenuInstanceIDFilter;
#endregion
#region "Page Load Methods"
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(IsPostBack)
return
;
SetGridDisplay();
SetInitialFilter();
}
public
void
Page_PreRenderComplete(
object
sender, EventArgs e)
{
HideExpandColumnRecursive(
this
.RG_MENU_MenuItem.MasterTableView);
}
/// <summary>
/// Changes the grid display based on the ApplicationMode
/// </summary>
private
void
SetGridDisplay()
{
this
._strAppMode = (Convert.ToInt32(bl_ApplicationData.AppMode)).ToString();
this
.txtAppMode.Text =
this
._strAppMode;
if
(bl_ApplicationData.AppMode == bl_ApplicationData.ApplicationMode.SYNCRONIZATION)
{
//disable insert, update & delete
this
.RG_MENU_MenuItem.AllowAutomaticInserts =
false
;
this
.RG_MENU_MenuItem.AllowAutomaticUpdates =
false
;
this
.RG_MENU_MenuItem.AllowAutomaticDeletes =
false
;
//hide edit & delete columns and show select column
this
.RG_MENU_MenuItem.MasterTableView.GetColumn(
"EditColumn"
).Display =
false
;
this
.RG_MENU_MenuItem.MasterTableView.GetColumn(
"DeleteColumn"
).Display =
false
;
this
.RG_MENU_MenuItem.MasterTableView.GetColumn(
"SelectColumn"
).Display =
true
;
//show buttons
this
.bDoSyncUP.Visible =
true
;
this
.bDoSyncDOWN.Visible =
true
;
// confirm message
this
.bDoSyncUP.Attributes.Add(
"OnClick"
,
"return confirm('Jeste li sigurni da želite pokrenuti sinkronizaciju? ');"
);
this
.bDoSyncDOWN.Attributes.Add(
"OnClick"
,
"return confirm('Jeste li sigurni da želite pokrenuti sinkronizaciju? ');"
);
//set sync legend colors and show it
this
.WUC_sync_legend1.bckColorInsert = bl_ApplicationData.BckColorInsert;
this
.WUC_sync_legend1.bckColorUpdate = bl_ApplicationData.BckColorUpdate;
this
.WUC_sync_legend1.bckColorDelete = bl_ApplicationData.BckColorDelete;
this
.WUC_sync_legend1.isSyncMode =
true
;
}
else
if
(bl_ApplicationData.AppMode == bl_ApplicationData.ApplicationMode.ADMINISTRATION)
{
this
.RG_MENU_MenuItem.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
}
}
private
void
SetInitialFilter()
{
this
.RG_MENU_MenuItem.MasterTableView.FilterExpression =
"(it.ParentItemID == 0)"
;
//glavni menu initial filter
this
.rcbMenuInstanceFilter.SelectedValue =
"8"
;
SetMenuInstanceFilter(
"8"
);
}
#endregion
#region "RadGrid Events"
protected
void
RG_MENU_MenuItem_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
GetDataSource();
}
protected
void
RG_MENU_MenuItem_ColumnCreated(
object
sender, GridColumnCreatedEventArgs e)
{
if
(e.Column
is
GridExpandColumn)
{
e.Column.Visible =
false
;
}
else
if
(e.Column
is
GridBoundColumn)
{
e.Column.HeaderStyle.Width = Unit.Pixel(100);
}
}
protected
void
RG_MENU_MenuItem_ItemDataBound(
object
sender, GridItemEventArgs e)
{
CreateExpandCollapseButton(e.Item,
"MenuItemID"
);
}
protected
void
RG_MENU_MenuItem_ItemCreated(
object
sender, GridItemEventArgs e)
{
CreateExpandCollapseButton(e.Item,
"MenuItemID"
);
//e.Item.Expanded = false;
if
(e.Item
is
GridHeaderItem && e.Item.OwnerTableView !=
this
.RG_MENU_MenuItem.MasterTableView)
{
e.Item.Style[
"display"
] =
"none"
;
}
if
(e.Item
is
GridNestedViewItem)
{
e.Item.Cells[0].Visible =
false
;
}
if
(bl_ApplicationData.AppMode == bl_ApplicationData.ApplicationMode.ADMINISTRATION)
{
this
.ItemCreatedAdmin(e);
}
else
if
(bl_ApplicationData.AppMode == bl_ApplicationData.ApplicationMode.SYNCRONIZATION)
{
this
.ItemCreatedSync(e);
}
}
protected
void
RG_MENU_MenuItem_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName ==
"CustomEdit"
)
{
EditRow(e);
}
}
protected
void
RG_MENU_MenuItem_InsertCommand(
object
sender, GridCommandEventArgs e)
{
GetValues(e);
Insert();
}
protected
void
RG_MENU_MenuItem_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
GetValues(e);
Update(e);
}
protected
void
RG_MENU_MenuItem_DeleteCommand(
object
sender, GridCommandEventArgs e)
{
Delete(e);
}
public
void
SelectAll_CheckedChanged(
object
sender, EventArgs e)
{
this
.RG_MENU_MenuItem.Rebind();
foreach
(GridDataItem item
in
this
.RG_MENU_MenuItem.MasterTableView.Items)
{
(item.FindControl(
"cbxSelectForSync"
)
as
CheckBox).Checked = (sender
as
CheckBox).Checked;
}
}
#endregion
#region "Insert - Update - Delete"
private
void
Insert()
{
string
strMessage = String.Empty;
bool
isInserted =
false
;
new
bl_MENU_MenuItem().Insert(Convert.ToInt64(
this
._htOdsValues[
"ParentItemID"
])
, Convert.ToInt64(
this
._htOdsValues[
"MenuInstanceID"
])
, Convert.ToInt64(
this
._htOdsValues[
"PageID"
])
,
this
._htOdsValues[
"MenuItemUrl"
].ToString()
,
this
._htOdsValues[
"AppDescription"
].ToString()
, Convert.ToInt32(
this
._htOdsValues[
"WebOrder"
])
, Convert.ToBoolean(
this
._htOdsValues[
"IsActive"
])
,
base
.LoggedUser.UserID
, Convert.ToInt32(
this
._htOdsValues[
"PriorityFactor"
])
,
out
isInserted
,
out
strMessage);
DisplayMessage(!isInserted, strMessage);
}
private
void
Update(GridCommandEventArgs e)
{
string
strMessage = String.Empty;
bool
isUpdated =
false
;
long
lMenuItemID = Convert.ToInt64((e.Item
as
GridEditableItem).GetDataKeyValue(
"MenuItemID"
));
new
bl_MENU_MenuItem().Update(lMenuItemID
, Convert.ToInt64(
this
._htOdsValues[
"ParentItemID"
])
, Convert.ToInt64(
this
._htOdsValues[
"MenuInstanceID"
])
, Convert.ToInt64(
this
._htOdsValues[
"PageID"
])
,
this
._htOdsValues[
"MenuItemUrl"
].ToString()
,
this
._htOdsValues[
"AppDescription"
].ToString()
, Convert.ToInt32(
this
._htOdsValues[
"WebOrder"
])
, Convert.ToBoolean(
this
._htOdsValues[
"IsActive"
])
,
base
.LoggedUser.UserID
, Convert.ToInt32(
this
._htOdsValues[
"PriorityFactor"
])
,
out
isUpdated
,
out
strMessage);
DisplayMessage(!isUpdated, strMessage);
}
private
void
Delete(GridCommandEventArgs e)
{
string
strMessage = String.Empty;
bool
isDeleted =
false
;
long
lMenuItemID = Convert.ToInt64((e.Item
as
GridEditableItem).GetDataKeyValue(
"MenuItemID"
));
new
bl_MENU_MenuItem().Delete(lMenuItemID
,
out
isDeleted
,
out
strMessage);
DisplayMessage(!isDeleted, strMessage);
}
#endregion
#region "ObjectDataSource Events"
protected
void
ods_MENU_MenuItem_Inserting(
object
sender, ObjectDataSourceMethodEventArgs e)
{
SetOdsValues(e);
}
protected
void
ods_MENU_MenuItem_Updating(
object
sender, ObjectDataSourceMethodEventArgs e)
{
SetOdsValues(e);
}
protected
void
ods_MENU_MenuItem_Deleting(
object
sender, ObjectDataSourceMethodEventArgs e)
{
}
protected
void
ods_MENU_MenuItem_Inserted(
object
sender, ObjectDataSourceStatusEventArgs e)
{
DisplayMessage(!Convert.ToBoolean(e.OutputParameters[
"pIsInserted"
]), Convert.ToString(e.OutputParameters[
"pMessage"
]));
}
protected
void
ods_MENU_MenuItem_Updated(
object
sender, ObjectDataSourceStatusEventArgs e)
{
DisplayMessage(!Convert.ToBoolean(e.OutputParameters[
"pIsUpdated"
]), Convert.ToString(e.OutputParameters[
"pMessage"
]));
}
protected
void
ods_MENU_MenuItem_Deleted(
object
sender, ObjectDataSourceStatusEventArgs e)
{
DisplayMessage(!Convert.ToBoolean(e.OutputParameters[
"pIsDeleted"
]), Convert.ToString(e.OutputParameters[
"pMessage"
]));
}
#endregion
#region "Other Events"
protected
void
button_Click(
object
sender, EventArgs e)
{
((Button)sender).CssClass = (((Button)sender).CssClass ==
"rgExpand"
) ?
"rgCollapse"
:
"rgExpand"
;
}
protected
void
rcbMenuInstanceFilter_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
SetMenuInstanceFilter(e.Value);
}
#endregion
#region "Utility Methods"
public
void
GetDataSource()
{
RG_MENU_MenuItem.DataSource =
new
bl_MENU_MenuItem().GetAll(
this
.txtSortExpression.Text
, Convert.ToBoolean(
this
.txtSortDirection.Text)
,
this
.txtAppMode.Text);
}
public
void
HideExpandColumnRecursive(GridTableView pTableView)
{
GridItem[] nestedViewItems = pTableView.GetItems(GridItemType.NestedView);
foreach
(GridNestedViewItem nestedViewItem
in
nestedViewItems)
{
foreach
(GridTableView nestedView
in
nestedViewItem.NestedTableViews)
{
nestedView.Style[
"border"
] =
"0"
;
Button btnExpandCollapseButton = (Button)nestedView.ParentItem.FindControl(
"btnExpandCollapseButton"
);
if
(nestedView.Items.Count == 0)
{
if
(btnExpandCollapseButton !=
null
)
{
btnExpandCollapseButton.Style[
"visibility"
] =
"hidden"
;
}
nestedViewItem.Visible =
false
;
}
else
{
if
(btnExpandCollapseButton !=
null
)
{
btnExpandCollapseButton.Style.Remove(
"visibility"
);
}
}
if
(nestedView.HasDetailTables)
{
HideExpandColumnRecursive(nestedView);
}
}
}
}
public
void
CreateExpandCollapseButton(GridItem pItem,
string
pColumnUniqueName)
{
if
(pItem
is
GridDataItem)
{
if
(pItem.FindControl(
"btnExpandCollapseButton"
) ==
null
)
{
Button button =
new
Button();
button.Click +=
new
EventHandler(button_Click);
button.CommandName =
"ExpandCollapse"
;
button.CssClass = (pItem.Expanded) ?
"rgCollapse"
:
"rgExpand"
;
button.ID =
"btnExpandCollapseButton"
;
if
(pItem.OwnerTableView.HierarchyLoadMode == GridChildLoadMode.Client)
{
string
script = String.Format(@
"$find("
"{0}"
")._toggleExpand(this, event); return false;"
, pItem.Parent.Parent.ClientID);
button.OnClientClick = script;
}
int
level = pItem.ItemIndexHierarchical.Split(
':'
).Length - 1;
button.Style[
"margin-left"
] = level * 15 +
"px"
;
TableCell cell = ((GridDataItem)pItem)[pColumnUniqueName];
cell.Controls.Add(button);
cell.Controls.Add(
new
LiteralControl(
" "
));
cell.Controls.Add(
new
LiteralControl(((GridDataItem)pItem).GetDataKeyValue(pColumnUniqueName).ToString()));
}
}
}
private
void
DisplayMessage(
bool
pIsError,
string
pText)
{
if
(pIsError ==
true
)
{
this
.lblActionNotOk.Visible =
true
;
this
.lblActionNotOk.Text = pText;
this
.lblActionOk.Visible =
false
;
}
else
{
this
.lblActionOk.Visible =
true
;
this
.lblActionOk.Text = pText;
this
.lblActionNotOk.Visible =
false
;
}
}
private
void
ItemCreatedAdmin(GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditFormItem geiEditedItem = e.Item
as
GridEditFormItem;
geiEditedItem.Visible =
true
;
if
(e.Item.DataItem
is
bo_MENU_MenuItem)
{
bo_MENU_MenuItem boCurrent = (bo_MENU_MenuItem)e.Item.DataItem;
RadComboBox rcbParentItemID = geiEditedItem.FindControl(
"rcbParentItemID"
)
as
RadComboBox;
rcbParentItemID.SelectedValue = boCurrent.ParentItemID != 0 ? boCurrent.ParentItemID.ToString() :
""
;
RadComboBox rcbMenuInstanceID = geiEditedItem.FindControl(
"rcbMenuInstanceID"
)
as
RadComboBox;
rcbMenuInstanceID.SelectedValue = boCurrent.MenuInstance.MenuInstanceID.ToString();
RadComboBox rcbPageID = geiEditedItem.FindControl(
"rcbPageID"
)
as
RadComboBox;
rcbPageID.SelectedValue = boCurrent.Page.PageID != 0 ? boCurrent.Page.PageID.ToString() : String.Empty;
RadTextBox txtMenuItemUrl = geiEditedItem.FindControl(
"txtMenuItemUrl"
)
as
RadTextBox;
txtMenuItemUrl.Text = boCurrent.MenuItemUrl.ToString();
RadTextBox txtAppDescription = geiEditedItem.FindControl(
"txtAppDescription"
)
as
RadTextBox;
txtAppDescription.Text = boCurrent.AppDescription.ToString();
RadNumericTextBox rnbWebOrder = geiEditedItem.FindControl(
"rnbWebOrder"
)
as
RadNumericTextBox;
rnbWebOrder.Text = boCurrent.WebOrder.ToString();
CheckBox chbIsActive = geiEditedItem.FindControl(
"chbIsActive"
)
as
CheckBox;
chbIsActive.Checked = boCurrent.IsActive;
RadNumericTextBox rnbPriorityFactor = geiEditedItem.FindControl(
"rnbPriorityFactor"
)
as
RadNumericTextBox;
rnbPriorityFactor.Text = boCurrent.PriorityFactor.ToString();
}
}
}
private
void
ItemCreatedSync(GridItemEventArgs e)
{
}
private
void
GetValues(GridCommandEventArgs e)
{
this
._htOdsValues =
new
Hashtable();
this
._htOdsValues.Add(
"ParentItemID"
, Convert.ToInt64(((e.Item
as
GridEditableItem).FindControl(
"rcbParentItemID"
)
as
RadComboBox).SelectedValue != String.Empty ? ((e.Item
as
GridEditableItem).FindControl(
"rcbParentItemID"
)
as
RadComboBox).SelectedValue :
"0"
));
this
._htOdsValues.Add(
"MenuInstanceID"
, Convert.ToInt64(((e.Item
as
GridEditableItem).FindControl(
"rcbMenuInstanceID"
)
as
RadComboBox).SelectedValue));
this
._htOdsValues.Add(
"PageID"
, Convert.ToInt64(((e.Item
as
GridEditableItem).FindControl(
"rcbPageID"
)
as
RadComboBox).SelectedValue != String.Empty ? ((e.Item
as
GridEditableItem).FindControl(
"rcbPageID"
)
as
RadComboBox).SelectedValue :
"0"
));
this
._htOdsValues.Add(
"MenuItemUrl"
, ((e.Item
as
GridEditableItem).FindControl(
"txtMenuItemUrl"
)
as
RadTextBox).Text);
this
._htOdsValues.Add(
"AppDescription"
, ((e.Item
as
GridEditableItem).FindControl(
"txtAppDescription"
)
as
RadTextBox).Text);
this
._htOdsValues.Add(
"WebOrder"
, Convert.ToInt32(((e.Item
as
GridEditableItem).FindControl(
"rnbWebOrder"
)
as
RadNumericTextBox).Text));
this
._htOdsValues.Add(
"IsActive"
, ((e.Item
as
GridEditableItem).FindControl(
"chbIsActive"
)
as
CheckBox).Checked);
this
._htOdsValues.Add(
"PriorityFactor"
, Convert.ToInt32(((e.Item
as
GridEditableItem).FindControl(
"rnbPriorityFactor"
)
as
RadNumericTextBox).Text));
}
private
void
SetOdsValues(ObjectDataSourceMethodEventArgs e)
{
e.InputParameters[
"ParentItemID"
] =
this
._htOdsValues[
"ParentItemID"
];
e.InputParameters[
"MenuInstanceID"
] =
this
._htOdsValues[
"MenuInstanceID"
];
e.InputParameters[
"PageID"
] =
this
._htOdsValues[
"PageID"
];
e.InputParameters[
"MenuItemUrl"
] =
this
._htOdsValues[
"MenuItemUrl"
];
e.InputParameters[
"AppDescription"
] =
this
._htOdsValues[
"AppDescription"
];
e.InputParameters[
"WebOrder"
] =
this
._htOdsValues[
"WebOrder"
];
e.InputParameters[
"IsActive"
] =
this
._htOdsValues[
"IsActive"
];
e.InputParameters[
"UserID"
] =
base
.LoggedUser.UserID;
e.InputParameters[
"PriorityFactor"
] =
this
._htOdsValues[
"PriorityFactor"
];
}
private
void
EditRow(GridCommandEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem gdiItem = (GridDataItem)e.Item;
long
lMenuItemID = Convert.ToInt64(gdiItem.GetDataKeyValue(
"MenuItemID"
));
this
._isRowFound =
false
;
if
(
this
.RG_MENU_MenuItem.MasterTableView.FindItemByKeyValue(
"MenuItemID"
, lMenuItemID) !=
null
)
this
.RG_MENU_MenuItem.MasterTableView.FindItemByKeyValue(
"MenuItemID"
, lMenuItemID).Edit =
true
;
else
EditRowRecursive(
this
.RG_MENU_MenuItem.MasterTableView, lMenuItemID);
this
.RG_MENU_MenuItem.Rebind();
}
}
private
void
EditRowRecursive(GridTableView pTableView,
long
pMenuItemID)
{
GridItem[] nestedViewItems = pTableView.GetItems(GridItemType.NestedView);
foreach
(GridNestedViewItem nestedViewItem
in
nestedViewItems)
{
if
(
this
._isRowFound)
return
;
foreach
(GridTableView nestedView
in
nestedViewItem.NestedTableViews)
{
if
(nestedView.FindItemByKeyValue(
"MenuItemID"
, pMenuItemID) !=
null
)
{
nestedView.FindItemByKeyValue(
"MenuItemID"
, pMenuItemID).Edit =
true
;
this
._isRowFound =
true
;
return
;
}
if
(nestedView.HasDetailTables)
{
EditRowRecursive(nestedView, pMenuItemID);
}
}
}
}
private
void
SetMenuInstanceFilter(
string
pMenuInstanceID)
{
this
._lMenuInstanceIDFilter = Convert.ToInt64(pMenuInstanceID.Equals(String.Empty) ?
"0"
: pMenuInstanceID);
this
.locTitle.Text =
"Uređivanje Stavki Menua"
;
this
.RG_MENU_MenuItem.MasterTableView.FilterExpression =
"(it.ParentItemID == 0)"
;
this
.txtMenuInstanceID.Text =
this
._lMenuInstanceIDFilter.ToString();
GridColumn gdcMenuInstanceID =
this
.RG_MENU_MenuItem.MasterTableView.GetColumnSafe(
"MenuInstanceID"
);
if
(
this
._lMenuInstanceIDFilter == 0)
{
gdcMenuInstanceID.CurrentFilterFunction = GridKnownFunction.NoFilter;
gdcMenuInstanceID.CurrentFilterValue = String.Empty;
}
else
{
this
.locTitle.Text +=
" za MenuInstanceID = "
+
this
.txtMenuInstanceID.Text;
this
.RG_MENU_MenuItem.MasterTableView.FilterExpression +=
" AND (it.MenuInstanceID == "
+
this
.txtMenuInstanceID.Text +
")"
;
gdcMenuInstanceID.CurrentFilterFunction = GridKnownFunction.EqualTo;
gdcMenuInstanceID.CurrentFilterValue =
this
.txtMenuInstanceID.Text;
}
this
.RG_MENU_MenuItem.MasterTableView.Rebind();
}
#endregion
#endregion
}
}
Please help me to have my self-referencing grid initially collapsed and with working edit forms.