0

同じ rootItem/ParentItem の下にある項目の選択のみをテレリック radTreeListView に許可するにはどうすればよいですか?

 UK
  -london
      -london 1
      -london --
      -london 100
  -Newcastle
      -Newcastle 1
      -Newcastle 2
      -Newcastle 3
  -liverpool
USA
  -New york
  -califonia
China
  -one
  -two

上記の radTreeListView のサンプル メニューから、ユーザーは選択のみを許可する必要があります。

イギリス、アメリカ、中国。 OR London、Newcastle、Liverpool、またはNewcastle 1、Newcastle 2、Newcastle 3ただし、 Newcastle 1、London 1、UK およびUK、Newcastle、Newcastle 1 は除く

ユーザーは、同じ階層にあるモノ/アイテムのみを選択する必要があります。基本的に、親と子を選択するのではなく、親または子または子から選択します。

これは使用しているコントロールです: http://www.telerik.com/help/silverlight/radtreelistview-overview.html

4

1 に答える 1

2

さて、ここでmanually、クラスにデータを入力し、選択したノードの親が誰であるかを確認できる各データの親を設定する場合は、それを行う必要があります!

では、データを入力する方法は?

この方法をもっと一般的に試してみてください。また、Telerik のサイトでサンプルが提供されています。

次のようにサンプルデータを試してみて、新しいことを学ぶためにSOを楽しんでください。

を含むクラスを作成する

このクラスを参照してください:

 public class Category
    {
        public string Name { get; set; }
        public Category Parent { get; set; }
        public ObservableCollection<Category> Items{get;set;}
        //Constructor
        public Category(string Cat_name, Category Cat_parent)
        {
            Name = Cat_name;
            Parent = Cat_parent;
            Items = new ObservableCollection<Category>();
        }
        /// <summary>
        /// Adds a child to this node
        /// </summary>
        /// <param name="child"></param>
        /// <returns></returns>
        public void AddChild(Category child)
        {
            if (child == null) //check if the child is not null
                return;
            Items.Add(child);
        }
        /// <summary>
        /// Returns Root Parent
        /// </summary>
        /// <returns></returns>
        public Category RootPanel()
        {
            if (Parent == null)
            {
                return this;
            }
            else
            {
                return this.Parent.RootPanel();
            }
        }
    }

今、私はあなたのサンプルデータ「UK-USA-China」を生成しようとしています

サンプルデータを生成するコードは次のとおりです

  public static ObservableCollection<Category> GetCategoryData()
    {
        ObservableCollection<Category> data = new ObservableCollection<Category>();
        Category UK = new Category("UK", null);//Because it's root panel it has no parents so parent should set to null
        //Adding sub category of UK
        Category London = new Category("London", UK);
        UK.AddChild(London);
        Category NewCastel = new Category("NewCastel", UK);
        UK.AddChild(NewCastel);
        Category LiverPool = new Category("LiverPool", UK);
        UK.AddChild(LiverPool);
        //adding childs of London and  Newcastle
        for (int i = 1; i <= 100; i++)
        {
            London.AddChild(new Category("london " + i.ToString(), London));
        }
        NewCastel.AddChild(new Category("NewCastle 1", NewCastel));
        NewCastel.AddChild(new Category("NewCastle 2", NewCastel));
        NewCastel.AddChild(new Category("NewCastle 3", NewCastel));
        data.Add(UK);
        Category USA = new Category("USA", null);
        USA.AddChild(new Category("NewYork", USA));
        USA.AddChild(new Category("California", USA));
        data.Add(USA);
        Category China = new Category("China", null);
        China.AddChild(new Category("one", China));
        China.AddChild(new Category("two", China));
        China.AddChild(new Category("three", China));
        data.Add(China);
        return data;
    }

ボタンの後ろで、データを RadTreeListView に設定します

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        radTreeListView.ItemsSource = GetCategoryData();
    }

リクエストにお応えする時が来ました! 親の確認:

 private void radTreeListView_SelectionChanging(object sender, Telerik.Windows.Controls.SelectionChangingEventArgs e)
    {
        if (e.AddedItems.Count>0)
        {
            if (radTreeListView.SelectedItems.Count >= 5)
            {
                e.Cancel = true;
            }
            if (radTreeListView.SelectedItems.Count>=1) // a node has been selected before
            {
                //
                Category PreviousSelectedItem = (Category)radTreeListView.SelectedItems[0];
                Category ItemWhichisSelectedNow = (Category)e.AddedItems[0];
                if (PreviousSelectedItem.Parent != ItemWhichisSelectedNow.Parent)
                {
                    e.Cancel = true;
                }
            }
        }
    }
于 2013-11-07T04:25:18.007 に答える