none
(Sumber: milist DOTNET) mapping hierarchy di C# RRS feed

  • Pertanyaan

  • Hi,

     

    Help me dong..

    bagaimana ya mapping data dalam class untuk data-data hierarchy?

    setiap data memiliki structureid dan parentstructureid.

    saya ingin data dipopulate ke dalam class setelah itu di bind ke dalam treeview di silverlight.

    adakah yg bs membantu?


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Jumat, 06 Januari 2012 08.13
    Moderator

Jawaban

  • Hi,

    untuk binding ke silverlight dalam bentuk treeview, pertama2 untuk class Structure, gunakan ObservableCollection dari System.Collections.ObjectModel

     

       public class Structure

       {

          public Guid StructureId { get; set; }

          public string StructureIdName { get; set; }

          public Guid ParentStructureId { get; set; }

          public string ParentStructureIdName { get; set; }

          public ObservableCollection<Structure> Children { get;set; }

     

          // jangan lupa untuk secara otomatis create Children Collection

          // pada constructor

          public Structure()

          {

             Children = new ObservableCollection<Structure>();

          }

       }

     

    Selanjutnya di main page, lakukan hal sebagai berikut:

    -          Inisialisasi List ( bisa dari database, atau dari mana pun, untuk contoh ini diinisiasi otomatis )

    -          Asumsi aku, nanti hasil dari database adalah list dari Structure utama, sehingga aku menggunakan Observable collection lagi sebagai data context, dan diakhir, set ObservableCollection tersebut sebagai DataContext

     

    public partial class MainPage : UserControl

       {

          public MainPage()

          {

             InitializeComponent();

          }

         

          public ObservableCollection<Structure> StructureList { get; set; }

          private void InitiateSampleData()

          {

             StructureList = new ObservableCollection<Structure>();

     

             Structure firstitem = new Structure { StructureIdName = "A" };

             firstitem.Children.Add(new Structure { StructureIdName = "A.1" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.i" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.ii" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.iii" });

             firstitem.Children.Add(new Structure { StructureIdName = "A.2" });

             firstitem.Children.Add(new Structure { StructureIdName = "A.3" });

             StructureList.Add(firstitem);

     

             Structure seconditem = new Structure { StructureIdName = "B" };

             seconditem.Children.Add(new Structure { StructureIdName = "B.1" });

             StructureList.Add(seconditem);

     

             this.DataContext = StructureList;

          }

     

          private void Button_Click(object sender, RoutedEventArgs e)

          {

             InitiateSampleData();

          }

       }

     

    Dan berikut adalah isi dari MainPage.xaml nya

     

    <StackPanel x:Name="LayoutRoot" Background="White">

          <TextBlock>Test Case : Silverlight TreeView</TextBlock>

          <Button Click="Button_Click">Press To Populate</Button>

          <sdk:TreeView ItemsSource="{Binding}">

             <sdk:TreeView.ItemTemplate>

                <sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">

                   <StackPanel>

                      <TextBlock Text="{Binding Path=StructureIdName}"></TextBlock>

                   </StackPanel>

                </sdk:HierarchicalDataTemplate>

             </sdk:TreeView.ItemTemplate>

          </sdk:TreeView>

     

       </StackPanel>

     

    Semoga Membantu,

     

    Dijawab oleh: Andri Mirandi

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Jumat, 06 Januari 2012 08.21
    Moderator

Semua Balasan

  • Hi,

    untuk binding ke silverlight dalam bentuk treeview, pertama2 untuk class Structure, gunakan ObservableCollection dari System.Collections.ObjectModel

     

       public class Structure

       {

          public Guid StructureId { get; set; }

          public string StructureIdName { get; set; }

          public Guid ParentStructureId { get; set; }

          public string ParentStructureIdName { get; set; }

          public ObservableCollection<Structure> Children { get;set; }

     

          // jangan lupa untuk secara otomatis create Children Collection

          // pada constructor

          public Structure()

          {

             Children = new ObservableCollection<Structure>();

          }

       }

     

    Selanjutnya di main page, lakukan hal sebagai berikut:

    -          Inisialisasi List ( bisa dari database, atau dari mana pun, untuk contoh ini diinisiasi otomatis )

    -          Asumsi aku, nanti hasil dari database adalah list dari Structure utama, sehingga aku menggunakan Observable collection lagi sebagai data context, dan diakhir, set ObservableCollection tersebut sebagai DataContext

     

    public partial class MainPage : UserControl

       {

          public MainPage()

          {

             InitializeComponent();

          }

         

          public ObservableCollection<Structure> StructureList { get; set; }

          private void InitiateSampleData()

          {

             StructureList = new ObservableCollection<Structure>();

     

             Structure firstitem = new Structure { StructureIdName = "A" };

             firstitem.Children.Add(new Structure { StructureIdName = "A.1" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.i" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.ii" });

             firstitem.Children[0].Children.Add(new Structure { StructureIdName = "A.1.iii" });

             firstitem.Children.Add(new Structure { StructureIdName = "A.2" });

             firstitem.Children.Add(new Structure { StructureIdName = "A.3" });

             StructureList.Add(firstitem);

     

             Structure seconditem = new Structure { StructureIdName = "B" };

             seconditem.Children.Add(new Structure { StructureIdName = "B.1" });

             StructureList.Add(seconditem);

     

             this.DataContext = StructureList;

          }

     

          private void Button_Click(object sender, RoutedEventArgs e)

          {

             InitiateSampleData();

          }

       }

     

    Dan berikut adalah isi dari MainPage.xaml nya

     

    <StackPanel x:Name="LayoutRoot" Background="White">

          <TextBlock>Test Case : Silverlight TreeView</TextBlock>

          <Button Click="Button_Click">Press To Populate</Button>

          <sdk:TreeView ItemsSource="{Binding}">

             <sdk:TreeView.ItemTemplate>

                <sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">

                   <StackPanel>

                      <TextBlock Text="{Binding Path=StructureIdName}"></TextBlock>

                   </StackPanel>

                </sdk:HierarchicalDataTemplate>

             </sdk:TreeView.ItemTemplate>

          </sdk:TreeView>

     

       </StackPanel>

     

    Semoga Membantu,

     

    Dijawab oleh: Andri Mirandi

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Jumat, 06 Januari 2012 08.21
    Moderator
  • Mas Andri

     

    terima kasih sebelumnya, sampling code yg mas buat aku coba dah sudah berhasil :), tp masih ada bbrp pertanyaan lagi sekarang problemnya bukan di control treeview silverlight nya melainkan di sisi programming C# nya.

    jadi aku rencana retrieve data dari database dengan isi table seperti ini:

     

    TableStructure

    ---------------

    -StructureID

    -StructureIDName

    -ParentStructureID --> StructureID untuk link ke parent Structure

     

    nah dari situ aku masih bingung bagaimana isi ke list yang mas Andri telah jelaskan sebelumnya, terutama looping untuk isi list children- nya :).

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 09 Januari 2012 07.24
    Moderator
  • Hi,

     

    Kl seandainya kamu make SQL Server untuk databasenya, Cara paling cepat dan nyaman adalah dengan menggunakan Linq to SQL J

    Sudah secara otomatis di handle untuk query childnya, jadi ga perlu terlalu report lagi

     

    Dijawab oleh: Andri Mirandi


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 09 Januari 2012 07.25
    Moderator
  • try this link, http://www.daniweb.com/software-development/csharp/threads/118395
     
    itu ada logic menggunakan looping nya, tinggal di trace aja and voila, u should have your own logic then, otherwise, just use what andri said :D

     

    Dijawab oleh: skyter X3


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 09 Januari 2012 07.26
    Moderator