Hi,
I have a radgrid with filter on field set on. I need to be able to set the filter of a specific field to a fixed value and enable the filter field. But this is user dependant.
How can I accomplish this?
My radgrid :
<
telerik:RadGrid
ID
=
"grdCodes"
GridLines
=
"None"
runat
=
"server"
PageSize
=
"20"
AllowPaging
=
"True"
AutoGenerateColumns
=
"False"
AllowFilteringByColumn
=
"true"
OnInsertCommand
=
"grdCodes_InsertCommand"
OnUpdateCommand
=
"grdCodes_UpdateCommand"
OnNeedDataSource
=
"grdCodes_NeedDataSource"
OnItemDataBound
=
"grdCodes_ItemDataBound"
OnItemCreated
=
"grdCodes_ItemCreated"
OnPreRender
=
"grdCodes_PreRender"
>
<
MasterTableView
CommandItemDisplay
=
"Top"
HorizontalAlign
=
"NotSet"
EditMode
=
"InPlace"
AutoGenerateColumns
=
"False"
>
<
Columns
>
<
telerik:GridEditCommandColumn
UniqueName
=
"EditColumn"
ButtonType
=
"ImageButton"
ItemStyle-Width
=
"10px"
/>
<
telerik:GridTemplateColumn
HeaderText
=
"System"
ItemStyle-Width
=
"20%"
SortExpression
=
"system"
UniqueName
=
"system"
DataField
=
"system"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"ddlSystemFilter"
runat
=
"server"
OnClientSelectedIndexChanged
=
"FilterSystemIndexChanged"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("system").CurrentFilterValue %>'>
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock2"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function FilterSystemIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("system", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# CartaMundi.BusinessLogic.Codes.GetDescription(cmWeb.Classes.Constants.SYSTEM_GENERAL,"SYSTEM", DataBinder.Eval(Container.DataItem, "system")) %>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"ddlSystem"
></
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"field_name"
HeaderStyle-Width
=
"20%"
HeaderText
=
"Field name"
SortExpression
=
"field_name"
UniqueName
=
"field_name"
ShowFilterIcon
=
"false"
CurrentFilterFunction
=
"Contains"
AutoPostBackOnFilter
=
"true"
>
<
ColumnValidationSettings
EnableRequiredFieldValidation
=
"true"
>
<
RequiredFieldValidator
Text="<img
src
=
'/CMIT/Images/Warning.gif'
border
=
'0'
>" Display="Dynamic" ToolTip="Field name is required." ErrorMessage="-Field name is required." ></
RequiredFieldValidator
>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"field_value"
HeaderStyle-Width
=
"20%"
HeaderText
=
"Field value"
SortExpression
=
"field_value"
UniqueName
=
"field_value"
ShowFilterIcon
=
"false"
CurrentFilterFunction
=
"Contains"
AutoPostBackOnFilter
=
"true"
>
<
ColumnValidationSettings
EnableRequiredFieldValidation
=
"true"
>
<
RequiredFieldValidator
Text="<img
src
=
'/CMIT/Images/Warning.gif'
border
=
'0'
>" Display="Dynamic" ToolTip="Field value is required." ErrorMessage="-Field value is required." ></
RequiredFieldValidator
>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"description"
HeaderStyle-Width
=
"40%"
HeaderText
=
"Description"
SortExpression
=
"description"
UniqueName
=
"description"
ShowFilterIcon
=
"false"
CurrentFilterFunction
=
"Contains"
AutoPostBackOnFilter
=
"true"
>
<
ColumnValidationSettings
EnableRequiredFieldValidation
=
"true"
>
<
RequiredFieldValidator
Text="<img
src
=
'/CMIT/Images/Warning.gif'
border
=
'0'
>" Display="Dynamic" ToolTip="Description is required." ErrorMessage="-Description is required." ></
RequiredFieldValidator
>
</
ColumnValidationSettings
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
AllowKeyboardNavigation
=
"true"
></
ClientSettings
>
</
telerik:RadGrid
>
The fields that can have fixed values is the GridTemplateColumn 'System' and the GridBoundColumn 'field_value'
I was able to set the default value but there is was no option to set the field enabled.
protected void grdCodes_PreRender(object sender, EventArgs e)
{
if (BLogic.UserRights.Authorised(CurrentUser, "ProjectGroups", "*DSP", Classes.Constants.SYSTEM_DESIGN ))
{
grdCodes.MasterTableView.FilterExpression = "(Convert.ToString(it[\"system\"]) = \"" + cmWeb.Classes.Constants.SYSTEM_DESIGN + "\") AND (it[\"field_name\"].ToString().Contains(\"PRJGROUPS\"))";
GridColumn column = grdCodes.MasterTableView.GetColumnSafe("system");
column.CurrentFilterFunction = GridKnownFunction.EqualTo;
column.CurrentFilterValue = cmWeb.Classes.Constants.SYSTEM_DESIGN;
column = grdCodes.MasterTableView.GetColumnSafe("field_name");
column.CurrentFilterFunction = GridKnownFunction.EqualTo;
column.CurrentFilterValue = "PRJGROUPS";
grdCodes.MasterTableView.Rebind();
}
}
There are users that may not be able to select other values in the filter and have a fixed value. Other user must be are able to use the filter as they wish.
The part of the code '(BLogic.UserRights.Authorised(CurrentUser, "ProjectGroups", "*DSP", Classes.Constants.SYSTEM_DESIGN ))' decides if the users has limitid selection options.
Can this be done?
Kind regards
Suzy