none
наследовать от DataTable RRS feed

  • Вопрос

  • Добрый день подскажите пожалуйста. Какой метод необходимо переписать в наследнике DataTable для изменения типа  добавляемого столбца ?
    5 января 2011 г. 15:35

Ответы

  • Попробуй так:

    public class MyDataTable : DataTable
        {
          public MyDataTable()
          {
            this.Columns.CollectionChanged += new CollectionChangeEventHandler(Columns_CollectionChanged);
          }
    
          private void Columns_CollectionChanged(object sender, CollectionChangeEventArgs e)
          {
            if (e.Element is DataColumn)
            {
              // Изменяем тип
              ((DataColumn)e.Element).DataType = typeof(int);
            }
    
          }
        }

    Код проверки:

     
    private void button1_Click(object sender, EventArgs e)
        {
          MyDataTable tbl = new MyDataTable();
    
          this.dataGridView1.DataSource = tbl;
    
          DataColumn col = new DataColumn("1", typeof(string));
    
          tbl.Columns.Add(col);
    
          DataRow row = tbl.NewRow();
    
          row[0] = 10000;
    
          tbl.Rows.Add(row);
        }
    

    6 января 2011 г. 6:49

Все ответы

  • Здравствуйте, Михаил!

    Имеете ввиду для изменения типа уже добавленного (существующего в таблице) столбца?


    E-mail: Svatoslav.Pankratov@gmail.com
    5 января 2011 г. 19:44
  • Попробуй так:

    public class MyDataTable : DataTable
        {
          public MyDataTable()
          {
            this.Columns.CollectionChanged += new CollectionChangeEventHandler(Columns_CollectionChanged);
          }
    
          private void Columns_CollectionChanged(object sender, CollectionChangeEventArgs e)
          {
            if (e.Element is DataColumn)
            {
              // Изменяем тип
              ((DataColumn)e.Element).DataType = typeof(int);
            }
    
          }
        }

    Код проверки:

     
    private void button1_Click(object sender, EventArgs e)
        {
          MyDataTable tbl = new MyDataTable();
    
          this.dataGridView1.DataSource = tbl;
    
          DataColumn col = new DataColumn("1", typeof(string));
    
          tbl.Columns.Add(col);
    
          DataRow row = tbl.NewRow();
    
          row[0] = 10000;
    
          tbl.Rows.Add(row);
        }
    

    6 января 2011 г. 6:49