here my code:
KTFrameworkCusEntities dcc = new KTFrameworkCusEntities();
IQueryable<
udv_Articles
> _udvResult;
public IEnumerable<
udv_Articles
> getAllArticleByCat(int catid)
{
//KTFrameworkCusEntities dc = new KTFrameworkCusEntities();
//_udvPro = null;
_udvResult = dcc.udv_Articles.Include("udv_Categories").Where(t => t.ArticleID == 99999999);
loadArticlebyCate(catid);
return _udvResult.OrderByDescending(t => t.UpdatedDate).ToList();
}
protected IQueryable<
udv_Articles
> loadArticlebyCate(int caid)
{
//KTFrameworkCusEntities dc = new KTFrameworkCusEntities();
Func<
KTFrameworkCusEntities
, IQueryable<udv_Articles>> _IEProList = CompiledQuery.Compile((KTFrameworkCusEntities ne) => ne.udv_Articles.Include("udv_Categories").Where(t => t.udv_Categories.CateID == caid));
if (_IEProList(dcc).Count() > 0)
{
_udvResult = _udvResult.Concat(_IEProList(dcc));
}
IEnumerable<
udv_Categories
> _IECatList = dcc.udv_Categories.Where(c => c.ParentID == caid);
if (_IECatList.Count() > 0)
{
foreach (var item in _IECatList)
{
loadArticlebyCate(item.CateID);
}
}
return _udvResult;
}
IQueryable<
udv_Categories
> _udvResult2;
public IEnumerable<
udv_Categories
> getAllCategoriesByCat(int catid)
{
//KTFrameworkCusEntities dc = new KTFrameworkCusEntities();
//_udvPro = null;
_udvResult2 = dcc.udv_Categories.Where(t => t.CateID == 99999999);
loadCategorybyCate(catid);
return _udvResult2.Where(t => t.IsActive == true).OrderBy(t => t.DisplayOrder).ToList();
}
protected IQueryable<
udv_Categories
> loadCategorybyCate(int caid)
{
//KTFrameworkCusEntities dc = new KTFrameworkCusEntities();
Func<
KTFrameworkCusEntities
, IQueryable<udv_Categories>> _IEProList = CompiledQuery.Compile((KTFrameworkCusEntities ne) => ne.udv_Categories.Where(t => t.ParentID == caid));
//IEnumerable<
udv_Categories
> _IEProList = dc.udv_Categories.Where(t => t.ParentID == caid);
//IEnumerable<
udv_Articles
> _IEProList = from c in dc.udv_Articles where c.udv_Categories.CateID == caid select c;
if (_IEProList(dcc).Count() > 0)
{
_udvResult2 = _udvResult2.Concat(_IEProList(dcc));
}
IEnumerable<
udv_Categories
> _IECatList = dcc.udv_Categories.Where(c => c.ParentID == caid);
if (_IECatList.Count() > 0)
{
foreach (var item in _IECatList)
{
loadCategorybyCate(item.CateID);
}
}
return _udvResult2;
}
<
telerik:RadGrid
ID
=
"RadGrid1"
AllowFilteringByColumn
=
"true"
PageSize
=
"20"
ShowFooter
=
"True"
AllowPaging
=
"True"
AutoGenerateColumns
=
"false"
GridLines
=
"None"
ShowStatusBar
=
"true"
runat
=
"server"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
EditMode
=
"InPlace"
AllowFilteringByColumn
=
"True"
ShowFooter
=
"True"
DataKeyNames
=
"ArticleID"
TableLayout
=
"Fixed"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Title"
HeaderText
=
"Tiêu đề"
AutoPostBackOnFilter
=
"true"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
>
<
HeaderStyle
Width
=
"25%"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"CateID"
HeaderText
=
"Danh mục"
UniqueName
=
"CateID"
HeaderStyle-Width
=
"200px"
SortExpression
=
"DisplayOrder"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBoxCategories"
DataTextField
=
"Title"
DataValueField
=
"CateID"
Height
=
"100px"
AppendDataBoundItems
=
"true"
runat
=
"server"
>
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
</
Items
>
</
telerik:RadComboBox
>
</
FilterTemplate
>
<
ItemTemplate
>
<%# Eval("udv_Categories.Title") %>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
if(!ispostback){
RadGrid1.DataSource = getAllArticleByCat(113);
RadGrid1.DataBind();
}
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridFilteringItem)
{
GridFilteringItem item = (GridFilteringItem)e.Item;
RadComboBox combo = (RadComboBox)item.FindControl("RadComboBoxCategories");
using (dmsFunction dmsf = new dmsFunction())
{
combo.DataSource = getCategoryByParent(113).ToList();
combo.DataBind();
combo.AutoPostBack = true;
combo.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
}
}
}
void combo_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
// Custom Filter: Call getAllArticleByCat(Convert.ToInt32(combo.SelectedValue)) to get all Article by Categories
// Then RadGrid Filter
// Teach me how... Thanks
}