W MSDN mówią o kontroli TreeView ("Wiązanie do danych" akapit):Binding ASP.NET TreeView formantu do zestawu danych
Kontrola TreeView może być także zobowiązany do obiektu XmlDocument lub DataSet obiekt z relacjami. Aby połączyć się z jednym z tych źródeł danych, ustaw właściwość DataSource kontrolki TreeView na źródło danych , a następnie wywołaj metodę DataBind.
Więc na stronie proste WebForms tylko z TreeView I napisał:
DataSet ds = new DataSet();
DataTable dt = new DataTable("Masters");
ds.Tables.Add(dt);
dt.Columns.Add("MasterId", typeof(Int32));
dt.Columns.Add("Name", typeof(String));
DataTable dt1 = new DataTable("Details");
ds.Tables.Add(dt1);
dt1.Columns.Add("DetailId", typeof(Int32));
dt1.Columns.Add("MasterId", typeof(Int32));
dt1.Columns.Add("Name", typeof(String));
DataRow rw;
DataRow rw1;
for (int i = 0; i < 5; i++)
{
rw=dt.NewRow();
dt.Rows.Add(rw);
rw["MasterId"] = i;
rw["Name"] = "Master Name " + i.ToString();
for (int j = 0; j < 10; j++)
{
rw1 = dt1.NewRow();
dt1.Rows.Add(rw1);
rw1["DetailId"] = i * 5 + j;
rw1["MasterId"] = i;
rw1["Name"] = "Detail Name " + j.ToString() + " of Master Name "+ i.ToString();
}
}
ds.Relations.Add(new DataRelation("Masters_Details",dt.Columns["MasterId"], dt1.Columns["MasterId"]));
TreeView1.DataSource = ds;
TreeView1.DataBind();
Ale w kolejce, gdzie mogę ustawić DataSource zgłasza wyjątek:
tylko HierarchicalDataBoundControl akceptuje źródeł danych, które implementują IHierarchicalDataSource lub IHierarchicalEnumerable.
Zrozumiałem, że to się dzieje, ponieważ DataSet nie implementuje takiego interfejsu ... więc dlaczego napisano, że można powiązać z "DataSet with relations"? Z góry dziękuję
Być może pomocne: http://www.codeproject.com/Articles/25753/Binding-the-ASP -NET-TreeView-a-DataSet-or-an-Ob Chociaż nie wyjaśnia języka w dokumentacji. –
tks czytałem ten artykuł ... i wiele z nich, gdzie TreeView zapełnił węzeł po węźle ... ale kluczowym punktem mojego pytania jest ** dlaczego ** mówią, że jest to możliwe w natywny sposób. –
W takim przypadku w witrynie MSDN zazwyczaj oceniam ten temat jako nieprzydatny, a następnie przedstawiam wyjaśnienie mojego rozumowania lub tego, co powinno tam być. czyli: gdzie jest przykład dla tego przypadku, jaki jest najbliższy. –