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

