2017-05-02 24 views
1

リピータコントロールに4つの値が設定されています。
Class_1
Class_2
Class_4
実行時にリピータインデックスを変更する

1 Class_1
2 Class_2
3 Class_4
4 Class_3

リピータは、リピータは、それは、データを表示する表示されているのでとき、インデックス値にバインドされClass_3。

しかし、私はデータを表示するよう:

Class_1
Class_2
Class_3
Class_4。

バインディング時にシーケンスを変更する必要があります。 データをバインドまたは表示する際には、最初にインデックス4の値を次にインデックス3に表示する必要があります。

+1

ソースデータをソートし、リピータにバインドします。インデックス上のバインドは、それとは関係ありません。 – VDWWD

+0

あなたはIEnumerableクラスを実装し、列挙子を書く必要があると思います。 –

+0

@VDWWDソートは順序付けられた方法で行うことができます。私の場合、私はインデックス値が1,2,3,4の代わりに1,2,4,3と表示される必要があります。 –

答えて

0

上記はIEnumerableクラスの実装の例で、1,2,4、 3:

public class MyEnumerable<T> : IEnumerable<T> 
{ 
    private List<T> _list; 

    public MyEnumerable() 
    { 
     _list = new List<T>(); 
    } 

    public void Add(T value) 
    { 
     _list.Add(value); 
    } 

    public bool Remove(T value) 
    { 
     return _list.Remove(value); 
    } 

    public bool Exists(Predicate<T> value) 
    { 
     return _list.Exists(value); 
    } 

    public bool Contains(T value) 
    { 
     return _list.Contains(value); 
    } 
    public IEnumerator<T> GetEnumerator() 
    { 
     for (int i = 0; i < _list.Count; i++) 
     { 
      if (i == 2) 
      { 
       i++; 
       yield return _list[i]; 
       yield return _list[i-1]; 
      } 
      else 
      { 
       yield return _list[i]; 
      } 
     } 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     for (int i = 0; i < _list.Count; i++) 
     { 
      if (i == 3) 
      { 
       yield return _list[i + 1]; 
       yield return _list[i]; 
       i += 2; 
      } 
      else 
      { 
       yield return _list[i]; 
       i++; 
      } 
     } 
    } 
} 

しかし、あなたのリストには、以上の4つの項目になります場合は、あなたのニーズに応じてでGetEnumerator()を変更する必要があります。

これは、 "First"、 "Second"、 "Third"、 "Fourth"の順番で表示されるリストの中に "First"、 "Second"、 "Third" 。

static void Main(string[] args) 
{ 
    MyEnumerable<string> myEnumerable = new MyEnumerable<string>() 
    { 
     "First","Second","Fourth","Third" 
    }; 
    foreach (var tmp in myEnumerable) 
    { 
     Console.WriteLine(tmp); 
    } 
} 
関連する問題