Смена порядка столбцов в Datagridview

Тема в разделе ".NET", создана пользователем Balda, 25 фев 2009.

Наш партнер Genesis Hackspace
  1. Balda

    Balda Гость

    MS VS .NET 2008.
    Есть стандартный dataGrigView. Источником данных для него служит dataSet.
    Проблема в том, что при изменении пользователем порядка столбцов в dataGrigView последовательность столбцов в dataSet остается старой.
    Что нужно сделать чтобы изменения затрагивали не только внешний вид dataGrigView, но и меняли его источник?
     
  2. etc

    etc Гость

    Ничего делать ненадо. Ваще не понятен смысл сего действа. ДатаСет есть ДатаСет, какая разница в какой последовательности там колонки?
     
  3. Balda

    Balda Гость

    Дело в том, что данные из этого ДатаСета потом выводяться в документ Ексель.
    И если уж пользователь поменял порядок столбцов, то хотелось бы чтобы в документе отображался новый порядок.
    А на деле все равно остается старый...
     
  4. etc

    etc Гость

    Вы скидываете в одну кучу хранение данных и их представление. Это одна из самых грубых ошибок.
    То как данные находяться в хранилище, никоем образом не должно влиять на то как их хотят видеть в том или ином представлении.
    За "синхронизацию" сего отвечает прикладной момент, т.е. некий алгоритм. Таким образом, при выводе данных вы должны сами это дело предусмотреть.
    Как? зависит от конкретики.
    Как вы выводите данные в Ексель?
     
  5. Balda

    Balda Гость

    Вот:
    Код (Text):
    for(int i=0; i<Count+1;i++)
    for(int j=0;j<this.dataSet2.Tables[0].Columns.Count;j++)
    {
    range = (Excel.Range)ws.Cells[i+1,j+1];
    if((i+1)==1)
    range.Value2 = this.dataSet2.Tables[0].Columns[j].ColumnName.ToString();   
    else
    range.Value2 = this.dataSet2.Tables[0].Rows[i-1][j].ToString();

    }
    Или через Грид:
    Код (Text):
    range.Value2 = this.dataGridView1[j, i-1.Value].ToString();
    Результат в обоих случаях одинаков.
     
  6. etc

    etc Гость

    ээээ, не понял а нафига 2 раза? чем один не угодил?

    ну в любом случае, если вы хотите чтоб бралось по гриду, то ... утрировано я покажу просто а вы уж сами решайте что и как
    Код (Text):
    for(int i=0; i<Count+1;i++)
    for(int j=0;j<this.dataGridView1.Columns.Count;j++)
    {
    range = (Excel.Range)ws.Cells[i+1,j+1];
    if((i+1)==1)
    range.Value2 = this.dataGridView1.Columns[j].DataPropertyName;
    else
    range.Value2 = this.dataSet2.Tables[0].Rows[i-1][this.dataGridView1.Columns[j].DataPropertyName].ToString();
    }
    но и тут я не понял а что это - if((i+1)==1)? не проще ли сначало тупо пройти по колонкам, а потом по ровам, и не городить странные ифы внутри цикла?
     
Загрузка...
Похожие Темы - Смена порядка столбцов
  1. lionk
    Ответов:
    30
    Просмотров:
    1.942
  2. dimat
    Ответов:
    6
    Просмотров:
    2.454
  3. NickProstoNick
    Ответов:
    8
    Просмотров:
    3.363
  4. FBUS
    Ответов:
    0
    Просмотров:
    3.360
  5. makaset
    Ответов:
    9
    Просмотров:
    5.430

Поделиться этой страницей