none
связывание dataGridView с классом{List} RRS feed

  • Вопрос

  • Есть класс
    Код C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     public  class RezultTirage 
        {
            int dateTirage ;
          int number;
         List<byte> listTirage;
     
     
         public int DateTirage { get; set; }
        public     int Number{ get; set; }
        public    List<byte> ListTirage{ get; set; }
    Связываю с dataGridView. Поля dateTirage и number отображает. Не отображает поле List<byte> listTirage. Я в нем храню 6 чисел. Как заставить или переделать что...
    Нужно, чтобы все было в одну строку.

    • Перемещено Siddharth Chavan 1 октября 2010 г. 22:05 MSDN Forums Consolidation (От:Visual C#)
    3 декабря 2009 г. 6:15

Ответы

  • Несколько вариантов существует решения вашей проблемы. Один из них - обработка события CellFormatting, в которой вы устанавливаете пользовательский вид содержимого, т.к. по умолчанию для объекта List<byte> будет вызываться метод ToString, что не подходит. Пример
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);
            }
    
            void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Column3"))
                {
                    List<byte> lst= (List<byte>)e.Value;
                    string str = string.Empty;
                    if (lst != null)
                    {
                        foreach (var l in lst)
                        {
                            str += l.ToString() + " ";
                        }
                        e.Value = str;
                    }
    
                }
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                foreach (var test in RezultTirage.GetTestData())
                {
                    
                    dataGridView1.Rows.Add(test.Number, test.DateTirage, test.ListTirage);
                }
     
            }
        }
    
        public class RezultTirage
        {
            int dateTirage;
            int number;
            List<byte> listTirage;
    
    
            public int DateTirage { get; set; }
            public int Number { get; set; }
    
            public List<byte> ListTirage { get; set; }
    
            public static List<RezultTirage> GetTestData()
            {
                List<RezultTirage> lst = new List<RezultTirage>();
                RezultTirage rt = new RezultTirage { DateTirage = 1, Number = 1, ListTirage = new  List<byte>{ 1, 2, 3, 4, 5, 6 } };
                lst.Add(rt);
                rt = new RezultTirage { DateTirage = 2, Number = 2, ListTirage = new List<byte> { 7, 8, 9, 10, 11, 12 } };
                lst.Add(rt);
                return lst;
            }
        }
    • Помечено в качестве ответа wwowa 3 декабря 2009 г. 13:18
    • Снята пометка об ответе wwowa 3 декабря 2009 г. 13:19
    • Предложено в качестве ответа I.Vorontsov 3 декабря 2009 г. 14:35
    • Помечено в качестве ответа I.Vorontsov 3 декабря 2009 г. 16:42
    3 декабря 2009 г. 9:19

Все ответы

  • Несколько вариантов существует решения вашей проблемы. Один из них - обработка события CellFormatting, в которой вы устанавливаете пользовательский вид содержимого, т.к. по умолчанию для объекта List<byte> будет вызываться метод ToString, что не подходит. Пример
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);
            }
    
            void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Column3"))
                {
                    List<byte> lst= (List<byte>)e.Value;
                    string str = string.Empty;
                    if (lst != null)
                    {
                        foreach (var l in lst)
                        {
                            str += l.ToString() + " ";
                        }
                        e.Value = str;
                    }
    
                }
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                foreach (var test in RezultTirage.GetTestData())
                {
                    
                    dataGridView1.Rows.Add(test.Number, test.DateTirage, test.ListTirage);
                }
     
            }
        }
    
        public class RezultTirage
        {
            int dateTirage;
            int number;
            List<byte> listTirage;
    
    
            public int DateTirage { get; set; }
            public int Number { get; set; }
    
            public List<byte> ListTirage { get; set; }
    
            public static List<RezultTirage> GetTestData()
            {
                List<RezultTirage> lst = new List<RezultTirage>();
                RezultTirage rt = new RezultTirage { DateTirage = 1, Number = 1, ListTirage = new  List<byte>{ 1, 2, 3, 4, 5, 6 } };
                lst.Add(rt);
                rt = new RezultTirage { DateTirage = 2, Number = 2, ListTirage = new List<byte> { 7, 8, 9, 10, 11, 12 } };
                lst.Add(rt);
                return lst;
            }
        }
    • Помечено в качестве ответа wwowa 3 декабря 2009 г. 13:18
    • Снята пометка об ответе wwowa 3 декабря 2009 г. 13:19
    • Предложено в качестве ответа I.Vorontsov 3 декабря 2009 г. 14:35
    • Помечено в качестве ответа I.Vorontsov 3 декабря 2009 г. 16:42
    3 декабря 2009 г. 9:19
  • спасибо. Попробую.
    3 декабря 2009 г. 14:24