Hi.
I have a RadGridView object named rgvLinkList that contains a GridViewCommandColumn. I use a table that is read from an Access database as the data source (but I don't show all the columns in the database in the grid, I hide some). Then I add a command column to the grid, and take the button text in each row from another column (one of the hidden columns) in the grid.
My problem is: I want to add a filter to the command column, I tried to do something similar to the one described at the address below but failed.
https://www.telerik.com/forums/filtering-on-a-command-column#ZuNrDBneqEmAi9qmv8ZXtQ
The method I use for setting data source, adding command column and hiding some columns:
public
void
fillRgvWithLinks(RadGridView source)
{
string
msg =
""
;
try
{
int
i = 0;
source.DataSource = IOC.linksData.getAllLinks(
out
msg);
source.Columns[i++].HeaderText =
"Sıra No"
;
// 0
source.Columns[i++].HeaderText =
"Ana Grup"
;
// 1
source.Columns[i++].HeaderText =
"Alt Grup"
;
// 2
source.Columns[i++].HeaderText =
"Sürüm"
;
// 3 hide this
source.Columns[i++].HeaderText =
"Başlık"
;
// 4
source.Columns[i++].HeaderText =
"Adres"
;
// 5 hide this
source.Columns[i++].HeaderText =
"Doğrulama Url"
;
// 6 hide this
source.Columns[i++].HeaderText =
"Açıklama"
;
// 7 hide this
source.Columns[i++].HeaderText =
"Anahtar Kelimeler"
;
// 8 hide this
source.Columns[i++].HeaderText =
"Komutlar"
;
// 9 hide this
source.Columns.Add(AddCommandColumnToRgv());
foreach
(var item
in
source.Columns)
{
if
(item.Index == 0 || item.Index == 1 || item.Index == 2 || item.Index == 10) {
continue
; }
item.IsVisible =
false
;
}
}
catch
(Exception ex)
{
msg = ex.Message.ToString();
}
}
Add column method:
public
static
CustomCommandColumn AddCommandColumnToRgv()
{
CustomCommandColumn CommandColumn =
new
CustomCommandColumn();
CommandColumn.Name =
"LinkButon"
;
CommandColumn.HeaderText =
"Linke Git"
;
CommandColumn.UseDefaultText =
false
;
CommandColumn.FormatInfo =
new
System.Globalization.CultureInfo(
"tr-TR"
);
return
CommandColumn;
}
CustomCommandColumn class:
public
class
CustomCommandColumn : GridViewCommandColumn
{
public
CustomCommandColumn():
base
()
{
}
public
CustomCommandColumn(
string
name):
base
(name)
{
}
public
override
bool
AllowFiltering
{
get
{
return
true
;
}
}
}
CellFormatting event of my RadGridView :
private
void
rgvLinkList_CellFormatting(
object
sender, CellFormattingEventArgs e)
{
if
(e.Row
is
GridViewDataRowInfo) {
GridCommandCellElement commandCell = e.CellElement
as
GridCommandCellElement;
if
(commandCell !=
null
)
{
commandCell.CommandButton.Text = e.Row.Cells[4].Value.ToString();
}
}
}
CellBeginEditevent of my RadGridView, The descs array here consists of text values (text above buttons) read from a column in the database (Similar to Emanuel Varga's example) :
private
void
rgvLinkList_CellBeginEdit(
object
sender, GridViewCellCancelEventArgs e)
{
string
msg =
""
;
try
{
if
(rgvLinkList.Columns[e.ColumnIndex].Name !=
"LinkButon"
)
{
return
;
}
var editor = rgvLinkList.ActiveEditor
as
RadDropDownListEditor;
var dropDownElement = editor.EditorElement
as
RadDropDownListEditorElement;
string
[] descs = IOC.linksData.getDescriptions(
out
msg);
dropDownElement.DataSource = descs;
}
catch
(Exception ex)
{
msg = ex.Message.ToString();
}
}
And EditorRequired event of my RadGridView (Again, similar to the example of Emanuel Varga) :
private
void
rgvLinkList_EditorRequired(
object
sender, EditorRequiredEventArgs e)
{
var editManager = sender
as
GridViewEditManager;
if
(editManager ==
null
|| rgvLinkList.CurrentColumn.Name !=
"LinkButon"
)
{
return
;
}
e.Editor =
new
RadDropDownListEditor();
e.EditorType =
typeof
(RadDropDownListEditor);
}
I was able to add a filter to the column after all, but when I type something in the filter text box nothing happens. I wonder what is missing or wrong?