c# - Trouble filtering Grid -
story: have 3 different tables. timereport, dossier, bu first 1 connected second one, 1 many. second 1 connected third one, 1 many. 
we wanted use radgrid component display 'timereports'. built in filters example 'dossierid' , displaying property 'description'. works fine.
our problem want display , filter example bu.buid , bu.code. tried several ways, java script or in code behind. unfortunately doesn't work. problem seems want access properties on 2 tables. (from 'timereport' on 'dossier' 'bu')
<telerik:gridboundcolumn datafield="dossier.bu.code" filtercontrolalttext="filter buid column" headertext="bu" sortexpression="buid" uniquename="buid"> <filtertemplate> <telerik:radcombobox id="radcomboboxtitle" datasourceid="dsbu" datatextfield="code" datavaluefield="buid" appenddatabounditems="true" autopostback="true" onprerender="radcomboboxtitle_prerender" runat="server" onselectedindexchanged="radcomboboxtitle_selectedindexchanged"> <items> <telerik:radcomboboxitem text="all" /> </items> </telerik:radcombobox> </filtertemplate> </telerik:gridboundcolumn> code behind
protected void radcomboboxtitle_selectedindexchanged(object sender, radcomboboxselectedindexchangedeventargs e) { radcombobox bucombo = sender radcombobox; viewstate["bucombovalue"] = bucombo.selectedvalue; timereportgrid.mastertableview.filterexpression = "(it.[dossier.buid] = " + bucombo.selectedvalue + ")"; gridcolumn column = timereportgrid.mastertableview.getcolumnsafe("buid"); column.currentfilterfunction = gridknownfunction.equalto; column.currentfiltervalue = bucombo.selectedvalue; timereportgrid.rebind(); } protected void radcomboboxtitle_prerender(object sender, eventargs e) { if (viewstate["bucombovalue"] != null) { radcombobox bucombo = sender radcombobox; bucombo.selectedvalue = viewstate["bucombovalue"].tostring(); } } this code throws error on "timereportgrid.rebind()".
'dossier.buid' not member of type 'model.timereport' in loaded schemas. near escaped identifier, line 6, column 5.
feel free ask questions if necessary.
thanks , fast answer.
it looks running problem entityframework objects disconnected database when filtering , rebinding , cannot lazy-load content attempting filter on. try using include() statement in initial query loads grid tables want filter on available in disconnected collection being filtered.
code sample - following code-first entity framework objects:
public class mycontext : dbcontext { public dbset<timereport> timereport { get; set; } public dbset<dossier> dossier { get; set; } public dbset<bu> bu { get; set; } } public class bu { public int buid { get; set; } public string code { get; set; } } public class dossier { public int dossierid { get; set; } [foreignkey("bu")] public int buid { get; set; } public bu bu { get; set; } } public class timereport { public int timereportid { get; set; } [foreignkey("dossier")] public int dossierid { get; set; } public dossier dossier { get; set; } } i able re-write filterexpression on mastertableview of radgrid to:
timereportgrid.mastertableview.filterexpression = "(it.dossier.buid = " + bucombo.selectedvalue + ")"; and connection works.
check link more information how customize filterexpression radgrid
Comments
Post a Comment