I know i read a post about using a BindingList for Custom Class for UltraTree and so far it works.
Here's my code
public class ScreenViewList : BindingList<ScreenClass> { } public class ScreenClass { private BindingList<ScreenObjectClass> _screenobjects = new BindingList<ScreenObjectClass>(); public int ScreenID { get; set; } public string ScreenName { get; set; } public Image PrivilegeLevel { get; set; } public BindingList<ScreenObjectClass> _Screenobjects { get { return _screenobjects; } set { _screenobjects = value; } } } public class ScreenObjectClass { private string _name; private int _scrID; private int _objID; public ScreenObjectClass(int ScrID, int ScrObjID, string Name) { _name = Name; _objID = ScrObjID; _scrID = ScrID; } public int ScreenObjectID { get { return _objID; } set { _objID = value; } } public int ScreenID { get { return _scrID; } set { _scrID = value; } } public string ObjectName { get { return _name; } set { _name = value; } } }
the property with Bold in ScreenClass, I want to Display as Image on TreeView but unable to display Image.
On the Form I do this by getting the data from the database.
ScreenViewList _screenviews = new ScreenViewList(); foreach (DataRow rowscreen in ds.Tables[0].Rows) { ScreenClass _screen = new ScreenClass(); _screen.ScreenName = rowscreen["ScreenName"].ToString(); _screen.ScreenID = Convert.ToInt32(rowscreen["ScreenID"]) ; _screen.PrivilegeLevel = Imagelist1.Images[0]; _screenviews.Add(_screen); this.LoadScreenObjects(Convert.ToInt32(rowscreen["ScreenID"]),_screen); } tv.BeginUpdate(); BindingSource bg = new BindingSource(); bg.DataSource = _screenviews; tv.DataSource = bg; tv.EndUpdate(); I see the PrivilegeLevel Column with values as System.Drawing. Can someone please correct me what i am doing wrong here.
Thanks
Thanks!! I got the solution.
If you bound two grids to a table and a relation the same DataSet, then the BindingManager takes care of this for you.
An UltraDataSource does not have Relationship data, so there's really no wasy way to do this.
May I asked why you switched to an UltraDataSource rather than binding the grids directly to the DataSource?
That issue is resolved. I created datatable from grid. There is one more scenario.
I have two grids and both are using two different ultradataSource. Now , what I need is based on rows selected in first grid, data should be populated in 2 nd grid.
I have already added a relation in dataset which contains datatables for these two grid. Everything was working fine till i chnaged the datasouce to UltraDataSource from direct dataset.
Now, no matter which row user selects in top grid, bottom grid displays all the rows.
Any suggestion?
Thanks!!
It looks like you are adding a table to the DataSet. An UltraDataSource doesn't have tables, so there's no way to add a table to it. It uses a Band structure. But since I don't know why you are adding a table, it's impossible for me to guess what you need to do here.
This is what I am trying to do. Do you see any alternative for this.
foreach
(System.Windows.Forms.Control ctrlSubTabInnerControl in ctrlSubTabControl.Controls)
{
if (ctrlSubTabInnerControl.GetType() == typeof (UltraGrid))
ugGridData = (
UltraGrid) ctrlSubTabInnerControl;
dsSubTabData = (
DataSet) ugGridData.DataSource;
if (!mdsPreviewDataset.Tables.Contains(dsSubTabData.Tables[0].TableName))
mdsPreviewDataset.Tables.Add(dsSubTabData.Tables[0].Copy());
}