or
<
telerik:RadFilter
runat
=
"server"
ID
=
"RadFilter1"
FilterContainerID
=
"RadGrid1"
></telerik:RadFilter>
<
telerik:RadFilter
runat
=
"server"
ID
=
"RadFilter1"
DataSourceControlID
=
"EntityDataSourceCustomers"
OnApplyExpressions
=
"RadFilter1_ApplyExpressions"
>
</
telerik:RadFilter
>
<
telerik:RadGrid
ID
=
"dtgBuildingSizes"
runat
=
"server"
AllowPaging
=
"true"
AllowSorting
=
"true"
AllowFilteringByColumn
=
"true"
ShowFooter
=
"true"
AutoGenerateColumns
=
"false"
EnableHeaderContextMenu
=
"true"
EnableHeaderContextFilterMenu
=
"true"
PageSize
=
"5"
AllowMultiRowEdit
=
"true"
Width
=
"100%"
EnableLinqExpressions
=
"false"
OnNeedDataSource
=
"dtgBuildingSizes_NeedDataSource"
OnItemDataBound
=
"dtgBuildingSizes_ItemDataBound"
OnPreRender
=
"dtgBuildingSizes_PreRender"
OnItemCommand
=
"dtgBuildingSizes_ItemCommand"
>
<
MasterTableView
DataKeyNames
=
"Id"
EditMode
=
"InPlace"
IsFilterItemExpanded
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"SizeTypeDescr"
DataField
=
"SizeTypeDescr"
HeaderText="<%$ Resources: SizeType %>" ReadOnly="true" />
<
telerik:GridNumericColumn
UniqueName
=
"Size"
DataField
=
"Size"
DataType
=
"System.Decimal"
ItemStyle-HorizontalAlign
=
"Right"
HeaderStyle-HorizontalAlign
=
"Right"
HeaderText="<%$ Resources:RpaControlCaptions, lblSize %>" />
<
telerik:GridButtonColumn
UniqueName
=
"Delete"
CommandName
=
"Delete"
ButtonCssClass
=
"rgDel"
ButtonType
=
"LinkButton"
ItemStyle-HorizontalAlign
=
"Right"
ShowInEditForm
=
"true"
ConfirmText="<%$ Resources: AreYouSureYouWantToDeleteThisSize %>" />
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
protected
void
dtgBuildingSizes_PreRender(
object
sender, EventArgs e)
{
//initially set appropriate size grid rows to edit mode
if
(!IsPostBack)
dtgBuildingSizes.SetSizesGridToEditMode();
}
protected
void
dtgBuildingSizes_NeedDataSource(
object
sender, TelerikUI.GridNeedDataSourceEventArgs e)
{
var dataSource = ((BuildingEntity)CurrentBusinessEntity).Sizes;
dtgBuildingSizes.DataSource = dataSource;
dtgBuildingSizes.VirtualItemCount = dataSource.Count;
}
protected
void
dtgBuildingSizes_ItemDataBound(
object
sender, TelerikUI.GridItemEventArgs e)
{
if
(e.Item
is
TelerikUI.GridDataItem)
{
TelerikUI.GridDataItem dataItem = (TelerikUI.GridDataItem)e.Item;
//show/hide delete button based on availability for the size type
BuildingSizeEntity entity = (BuildingSizeEntity)dataItem.DataItem;
dataItem[
"Delete"
].Controls[0].Visible = entity.IsDeletable;
}
}
protected
void
dtgBuildingSizes_ItemCommand(
object
sender, TelerikUI.GridCommandEventArgs e)
{
switch
(e.CommandName)
{
case
RadGrid.DeleteCommandName:
if
(e.Item
is
TelerikUI.GridDataItem)
{
//remove the selected entity from the collection
TelerikUI.GridDataItem dataItem = (TelerikUI.GridDataItem)e.Item;
BuildingSizeEntity deletedEntity = GetSizeEntityForGridItem(dataItem);
((BuildingEntity)CurrentBusinessEntity).Sizes.Remove(deletedEntity);
}
break
;
default
:
if
(ControlsUtil.IsRebindNeededForRadGridCommand(e.CommandName))
{
//save previous edits before rebind
PostAllSizeData();
//execute command and place grid back into edit mode
e.ExecuteCommand(sender);
dtgBuildingSizes.SetSizesGridToEditMode();
e.Canceled =
true
;
//no further processing required
}
break
;
}
}
public
static
bool
IsRebindNeededForRadGridCommand(
string
commandName)
{
switch
(commandName)
{
// Editing
case
RadGrid.CancelAllCommandName:
case
RadGrid.CancelCommandName:
case
RadGrid.DeleteCommandName:
case
RadGrid.DeleteSelectedCommandName:
case
RadGrid.EditAllCommandName:
case
RadGrid.EditCommandName:
case
RadGrid.EditSelectedCommandName:
case
RadGrid.InitInsertCommandName:
case
RadGrid.PerformInsertCommandName:
case
RadGrid.UpdateCommandName:
case
RadGrid.UpdateEditedCommandName:
// Filtering
case
RadGrid.ClearFilterCommandName:
case
RadGrid.FilterCommandName:
case
RadGrid.HeaderContextMenuFilterCommandName:
// Paging
case
"ChangePageSize"
:
case
RadGrid.FirstPageCommandArgument:
case
RadGrid.LastPageCommandArgument:
case
RadGrid.NextPageCommandArgument:
case
RadGrid.PageCommandName:
case
RadGrid.PrevPageCommandArgument:
// Sorting
case
RadGrid.ClearSortCommandName:
case
RadGrid.SortCommandName:
// Misc.
case
RadGrid.ExpandCollapseCommandName:
case
RadGrid.RebindGridCommandName:
return
true
;
default
:
return
false
;
//all others do not implicitly call rebind
}
}
public
static
void
SetSizesGridToEditMode(
this
RadGrid grid)
{
if
(grid !=
null
)
{
SizeEntity size;
foreach
(GridDataItem dataItem
in
grid.Items)
{
size = dataItem.DataItem
as
SizeEntity;
if
(size !=
null
)
dataItem.Edit = !size.IsReadOnly;
//only set editable items to edit mode
}
grid.Rebind();
}
}
<
telerik:TreeListButtonColumn
UniqueName
=
"DeleteColumn"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
ToolTip
=
"Delete this row"
MinWidth
=
"30px"
MaxWidth
=
"30px"
HeaderStyle-Width
=
"30px"
Resizable
=
"False"
Reorderable
=
"False"
/>
<
telerik:TreeListButtonColumn
UniqueName
=
"EditColumn"
ButtonType
=
"ImageButton"
CommandName
=
"Edit"
ToolTip
=
"Edit this row (Double Click)"
MinWidth
=
"40px"
MaxWidth
=
"40px"
HeaderStyle-Width
=
"40px"
Resizable
=
"False"
Reorderable
=
"False"
/>