Hello,
I'm experiencing some trouble in the google-like filtering demo ( http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridandcombo/defaultcs.aspx?product=grid ).
The ItemRequested event is never fired, Loading statement stands forever without displaying any results.
This is my implementation of the gridboundcolumn :
protected
override
void
SetupFilterControls(TableCell cell)
{
base
.SetupFilterControls(cell);
cell.Controls.RemoveAt(0);
RadComboBox combo =
new
RadComboBox();
combo.ID = (
"RadComboBox1"
+
this
.DataField);
combo.ShowToggleImage =
false
;
combo.Skin =
"WebBlue"
;
combo.EnableLoadOnDemand =
true
;
combo.AutoPostBack =
false
;
combo.MarkFirstMatch =
true
;
combo.Height = Unit.Pixel(100);
combo.ItemsRequested +=
new
RadComboBoxItemsRequestedEventHandler(
this
.combo_ItemsRequested);
combo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(
this
.list_SelectedIndexChanged);
//cell.Controls.Clear();
cell.Controls.AddAt(0, combo);
cell.Controls.RemoveAt(1);
}
//RadGrid will call this method when the value should be set to the filtering input control(s)
protected
override
void
SetCurrentFilterValueToControl(TableCell cell)
{
base
.SetCurrentFilterValueToControl(cell);
RadComboBox combo = (RadComboBox)cell.Controls[0];
if
((
this
.CurrentFilterValue !=
string
.Empty))
{
combo.Text =
this
.CurrentFilterValue;
}
}
//RadGrid will cal this method when the filtering value should be extracted from the filtering input control(s)
protected
override
string
GetCurrentFilterValueFromControl(TableCell cell)
{
RadComboBox combo = (RadComboBox)cell.Controls[0];
return
combo.Text;
}
private
void
combo_ItemsRequested(
object
o, RadComboBoxItemsRequestedEventArgs e)
{
((RadComboBox)o).DataTextField =
this
.DataField;
((RadComboBox)o).DataValueField =
this
.DataField;
if
(
this
.UniqueName ==
"Autore"
)
{
try
{
((RadComboBox)o).DataSource = MYSOLUTION.DataLayer.GestioneAnomalie.GestioneAnomalieDataProvider.GetAutori(e.Text);
}
catch
(Exception ex)
{
throw
(ex);
}
}
else
if
(
this
.UniqueName ==
"Note"
)
{
try
{
((RadComboBox)o).DataSource = MYSOLUTION.DataLayer.GestioneAnomalie.GestioneAnomalieDataProvider.GetNote(e.Text);
}
catch
(Exception ex)
{
throw
(ex);
}
}
((RadComboBox)o).DataBind();
}
private
void
list_SelectedIndexChanged(
object
o, RadComboBoxSelectedIndexChangedEventArgs e)
{
GridFilteringItem filterItem = (GridFilteringItem)((RadComboBox)o).NamingContainer;
if
((
this
.UniqueName ==
"Index"
))
{
//this is filtering for integer column type
filterItem.FireCommandEvent(
"Filter"
,
new
Pair(
"EqualTo"
,
this
.UniqueName));
}
//filtering for string column type
filterItem.FireCommandEvent(
"Filter"
,
new
Pair(
"Contains"
,
this
.UniqueName));
}
RadGrid is in an ASCX file, it is placed in a RadAjaxPanel. A RadAjaxManager is also present down below the RadGrid, outside of the Ajax Panel.
<
telerik:RadGrid
ID
=
"RadGridGestioneAnomalie"
runat
=
"server"
AutoGenerateColumns
=
"False"
AllowFilteringByColumn
=
"true"
DataSourceID
=
"LinqDataSourceAnomalie"
GridLines
=
"Both"
Skin
=
"WebBlue"
AllowMultiRowSelection
=
"True"
AllowMultiRowEdit
=
"True"
SortingSettings-SortedBackColor
=
"AliceBlue"
SortingSettings-SortToolTip
=
"Ordina in base ai valori di questa colonna"
ShowStatusBar
=
"true"
StatusBarSettings-LoadingText
=
"Caricamento in corso"
StatusBarSettings-ReadyText
=
"Gestione Anomalie"
PageSize
=
"50"
PagerStyle-ForeColor
=
"Black"
PagerStyle-Position
=
"TopAndBottom"
PagerStyle-AlwaysVisible
=
"true"
EnableLinqExpressions
=
"true"
oninit
=
"RadGridGestioneAnomalie_Init"
onitemdatabound
=
"RadGridGestioneAnomalie_ItemDataBound"
onitemcommand
=
"RadGridGestioneAnomalie_ItemCommand"
oneditcommand
=
"RadGridGestioneAnomalie_EditCommand"
onitemcreated
=
"RadGridGestioneAnomalie_ItemCreated"
OnSortCommand
=
"RadGridGestioneAnomalie_SortCommand"
OnColumnCreating
=
"RadGridGestioneAnomalie_ColumnCreating"
oninsertcommand
=
"RadGridGestioneAnomalie_InsertCommand"
OnPreRender
=
"RadGridGestioneAnomalie_PreRender"
>
<
ExportSettings
IgnorePaging
=
"true"
OpenInNewWindow
=
"true"
FileName
=
"GestioneAnomalie"
ExportOnlyData
=
"true"
>
<
Pdf
FontType
=
"Subset"
PaperSize
=
"Letter"
AllowPrinting
=
"true"
/>
<
Excel
Format
=
"Html"
/>
<
Csv
ColumnDelimiter
=
"Comma"
RowDelimiter
=
"NewLine"
/>
</
ExportSettings
>
<
MasterTableView
GroupLoadMode
=
"Client"
HierarchyLoadMode
=
"Client"
CurrentResetPageIndexAction
=
"SetPageIndexToFirst"
VirtualItemCount
=
"50"
datakeynames
=
"ID_Anomalia"
datasourceid
=
"LinqDataSourceAnomalie"
CommandItemDisplay
=
"TopAndBottom"
GroupHeaderItemStyle-BackColor
=
"LemonChiffon"
AllowPaging
=
"true"
AllowCustomSorting
=
"true"
AllowFilteringByColumn
=
"true"
AutoGenerateColumns
=
"false"
AllowSorting
=
"true"
AllowNaturalSort
=
"false"
PagerStyle-Mode
=
"NextPrevNumericAndAdvanced"
PagerStyle-BackColor
=
"LightGray"
PagerStyle-ForeColor
=
"Black"
PagerStyle-Position
=
"TopAndBottom"
Name
=
"Anomalie"
NoMasterRecordsText
=
"Nessuna anomalia da mostrare"
AllowAutomaticDeletes
=
"True"
AllowAutomaticUpdates
=
"True"
AllowAutomaticInserts
=
"True"
CanRetrieveAllData
=
"True"
>
In the Page_Load, I pull out every column and later I put my personal dropdownfiltercolumn just for those column that has got particular UniqueName... here there's the code-behind :
protected
void
Page_Load(
object
sender, EventArgs e)
{
EnsureUpdatePanelFixups();
codiceProcesso =
this
.Page.Request.QueryString.Get(URLFactory.Param_ProcessoRilevatore);
if
(!(UserRole.isControlloQualita() || UserRole.isRilevatoreDelProcesso(codiceProcesso) || UserRole.isValidatoreDelProcesso(codiceProcesso)))
{
// Per ora disabilito
RadGridGestioneAnomalie.Visible =
false
;
//RadGridTotaliOperazioni.Visible = false;
}
RadGridGestioneAnomalie.MasterTableView.IsItemInserted =
false
;
LeggiParametriRicerca();
#region Creazione Filtro DropDown
if
(!IsPostBack)
{
_rgSupporto =
new
List<GridColumn>();
foreach
(GridColumn colonna
in
RadGridGestioneAnomalie.MasterTableView.Columns)
{
_rgSupporto.Add(colonna);
}
RadGridGestioneAnomalie.MasterTableView.Columns.Clear();
if
(_rgSupporto.Count > 0)
{
foreach
(GridColumn col
in
_rgSupporto)
{
if
((col.UniqueName ==
"Autore"
) || (col.UniqueName ==
"Note"
))
{
DropDownFilter gridColumn =
new
DropDownFilter();
this
.RadGridGestioneAnomalie.MasterTableView.Columns.Add(gridColumn);
gridColumn.DataField = col.HeaderText;
gridColumn.HeaderText = col.HeaderText;
}
else
this
.RadGridGestioneAnomalie.MasterTableView.Columns.Add(col);
}
}
}
any help is appreciated
thanks
Giovanni