c# - Hierarchical Data Grid Child -


<telerik:radgridview x:name="rgvdata" canuserfreezecolumns="false" gridlinesvisibility="horizontal" isreadonly="false" autogeneratecolumns="false"                          telerik:theming.theme="office_blue" itemssource="{binding}" >         <telerik:radgridview.childtabledefinitions>             <telerik:gridviewtabledefinition />         </telerik:radgridview.childtabledefinitions>         <telerik:radgridview.columns>             <telerik:gridviewdatacolumn datamemberbinding="{binding studentid}" header="category id" />             <telerik:gridviewdatacolumn datamemberbinding="{binding studentfn}" header="category name" />             <telerik:gridviewdatacolumn datamemberbinding="{binding studentln}" header="description" />             <telerik:gridviewdatacolumn datamemberbinding="{binding picture}" header="picture" />         </telerik:radgridview.columns>         <telerik:radgridview.hierarchychildtemplate>             <datatemplate>                 <telerik:radgridview x:name="radgridview1" loaded="rgvdata_loaded" showinsertrow="true"  canuserinsertrows="true"  itemssource="{binding subjects}" canuserfreezecolumns="false" autogeneratecolumns="false" showgrouppanel="false" isreadonly="false">                     <telerik:radgridview.columns>                         <telerik:gridviewdatacolumn datamemberbinding="{binding subjectid}" header="order id" />                         <telerik:gridviewdatacolumn datamemberbinding="{binding subjectname}" header="employee id" />                         <telerik:gridviewdatacolumn datamemberbinding="{binding subjectprofessor}" header="order date" />                         <telerik:gridviewdatacolumn datamemberbinding="{binding shipcountry}" header="ship country" />                     </telerik:radgridview.columns>                 </telerik:radgridview>             </datatemplate>         </telerik:radgridview.hierarchychildtemplate>     </telerik:radgridview> 

mainxaml.cs

public partial class mainwindow : window {     dataaccessdatacontext m_dcdata;     public mainwindow()     {         initializecomponent();         this.loaded += new routedeventhandler(mainwindow_loaded);         this.rgvdata.items.collectionchanged += new notifycollectionchangedeventhandler(items_collectionchanged);         rgvdata.filtered += new eventhandler<telerik.windows.controls.gridview.gridviewfilteredeventargs>(rgvdata_filtered);     }      void rgvdata_loaded(object sender, routedeventargs e)     {         var childgrid = (radgridview)sender;     var parentrow = childgrid.parentrow;      if (parentrow != null)     {         rgvdata.selecteditem = childgrid.datacontext;         parentrow.isexpandedchanged += new routedeventhandler(parentrow_isexpandedchanged);     }      }  void parentrow_isexpandedchanged(object sender, routedeventargs e) {     rgvdata.selecteditem = ((gridviewrow)sender).datacontext; }x       void rgvdata_filtered(object sender, telerik.windows.controls.gridview.gridviewfilteredeventargs e)     {         datacontext = m_dcdata;         m_dcdata = new dataaccessdatacontext();         m_dcdata.log = console.out;         rgvdata.itemssource = m_dcdata.students;         rgvdata.showinsertrow = true;     }      private void items_collectionchanged(object sender, notifycollectionchangedeventargs e)     {         try         {             if (e.action == notifycollectionchangedaction.add)             {                 foreach (student item in e.newitems)                 {                     m_dcdata.students.insertonsubmit(item);                 }             }             if (e.action == notifycollectionchangedaction.remove)             {                 foreach (student item in e.olditems)                 {                     m_dcdata.students.deleteonsubmit(item);                 }             }         }         catch (exception s)         { }     }     void mainwindow_loaded(object sender, routedeventargs e)     {         m_dcdata = new dataaccessdatacontext();         m_dcdata.log = console.out;         rgvdata.itemssource = m_dcdata.students;         rgvdata.showinsertrow = true;          rgvdata.itemssource = m_dcdata.students;         rgvdata.showinsertrow = true;     } } 

hi have no problem on loading child data related parent source. problem if try expand row loads first data it. example if have row1 expanded displays correct child table if go row2 , expand it, child records row1. tried looking answer , putting parent_isexpandedchanged event handle still wont display correct data. if try reload application again , try expand row 2 or row 3. child correct if expanded row display child row 2 or row 3. please doing wrong

your xaml looks sound, , can't see code posted cause problem. have confirmed data loaded correct? might loading same subject data each student. can check putting code button click event on window:

ienumerable<student> list = (ienumerable<student>)this.datacontext; foreach(student stu in students) {     debug.writeline(stu.studentid + ":");     foreach(subject sub in stu.subjects)     {         debug.writeline("\\t" + sub.subjectid)     } } 

Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -