Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поле вида combobox 
:(
    Опции темы
Jamezzz
Дата 23.10.2008, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



Имеется DataSet, в который загружается база из XML. DataGridView привязывается к DataSet и отображает таблицу. Требуется одно из полей сделать вида ComboBox с заранее заданными значениями. Подскажите, пожалуйста.

P.S. Если добавить поля в конструкторе и сразу указать одному из них DataGridViewComboBoxColumn, то данные почему-то, не сохраняются и не загружаются. А если поля будут автоматом добавляться из DataSet, то я не знаю, как присвоить одному из них такой тип. Если остановиться на первом варианте, то объясните, как сохранить таблицу в XML.

Это сообщение отредактировал(а) Jamezzz - 24.10.2008, 00:01
PM MAIL   Вверх
ProgrammingLife
Дата 24.10.2008, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.1.2008
Где: ЧИРЧИКАГО (UZ)

Репутация: нет
Всего: нет



а кодик!???
PM MAIL ICQ   Вверх
Jamezzz
Дата 24.10.2008, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



вот этот код не хочет сохранять:
Код

. . .
public partial class Form1 : Form
  {
    private DataSet dataSet;

    public Form1()
    {
      InitializeComponent();
      dataSet = new DataSet();
      dataSet.Tables.Add("MyTable");
      dataGrid.AutoGenerateColumns = false;
      dataGrid.DataSource = dataSet;
      dataGrid.DataMember = dataSet.Tables[0].TableName;
    }

. . .

    private void menuItemSaveAs_Click(object sender, EventArgs e)
    {
      dataGrid.Update();
      if ( saveFileDialog.ShowDialog() == DialogResult.OK )
      {
        try {
          dataSet.WriteXml(saveFileDialog.FileName);
        }
        catch (Exception ex)
        {
          MessageBox.Show("Не удалось сохранить файл. Причина: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
      }
    }

. . .


вот содержимое XML при 5-ти введённых записях:
Код

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <MyTable />
  <MyTable />
  <MyTable />
  <MyTable />
  <MyTable />
</NewDataSet>


должно быть так:
Код

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <MyTable>
    <Name>Jamezzz</Name>
    <ID>MF-12X</ID>
  </MyTable>
  <MyTable>
    <Name>Toshiya</Name>
    <ID>MD-18R</ID>
  </MyTable>
  <MyTable>
    <Name>KillSwitch</Name>
    <ID>RX-26Z</ID>
  </MyTable>
  <MyTable>
    <Name>Booker</Name>
    <ID>BC-11M</ID>
  </MyTable>
  <MyTable>
    <Name>Void</Name>
    <ID>ZX-80A</ID>
  </MyTable>
</NewDataSet>


Есдинственное, что удалось найти в инете - на форуме MSDN человек предлагает из грида тупым перебором добавить в новый сет названия полей и все строки с содержимым ячеек. Думаю, это извращение (ссылка)

Это сообщение отредактировал(а) Jamezzz - 24.10.2008, 07:54
PM MAIL   Вверх
Jamezzz
Дата 8.11.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



Неужели, никто не знает?!(((
PM MAIL   Вверх
ProgrammingLife
  Дата 8.11.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.1.2008
Где: ЧИРЧИКАГО (UZ)

Репутация: нет
Всего: нет



дело в ловле ошибке:  
Код

if ( saveFileDialog.ShowDialog() == DialogResult.OK )
      {
        try {
          dataSet.WriteXml(saveFileDialog.FileName);
        }
        catch (Exception ex)
        {
          MessageBox.Show("Не удалось сохранить файл. Причина: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
      }
    }


не совсем уверен но мне кажется что тебе здесь надо хорошенько продумать на счет comboBoксе не задан а сохраняетсся по умолчанию не буду спорить что это неверно  но у меня была похоже ситуация..подскажите товарищи точнее !
PM MAIL ICQ   Вверх
Jamezzz
Дата 8.11.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



Уже помогли. Вот пример:

Код

using System;
using System.Data;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
  publicpartialclass Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    DataSet dataSet = new DataSet();

    privatevoid Form1_Load(object sender, EventArgs e)
    {
      DataGridViewTextBoxColumn keyColumn = new DataGridViewTextBoxColumn();
      keyColumn.DataPropertyName = "Key";
      DataGridViewComboBoxColumn nameColumn = new DataGridViewComboBoxColumn();      
      nameColumn.DataPropertyName = "Name";
      nameColumn.Items.Add("Item #1");
      nameColumn.Items.Add("Item #2");
      nameColumn.Items.Add("Item #3");
      dataGridView1.Columns.Add(keyColumn);
      dataGridView1.Columns.Add(nameColumn);

      DataTable dataTable = new DataTable("table");
      dataTable.Columns.Add("Key", typeof(int));
      dataTable.Columns.Add("Name", typeof(string));
      dataSet.Tables.Add(dataTable);
      this.dataGridView1.DataSource = dataSet;
      this.dataGridView1.DataMember = dataTable.TableName;
    }

    privatevoid button1_Click(object sender, EventArgs e)
    {
      dataSet.AcceptChanges();
      dataSet.WriteXml("dataSet.xml");
    }
  }
}


Теперь относительно к этому примеру - как датагридный комбобокс привязать к таблице отображаемых и непосредственных значений?? Хелп..
PM MAIL   Вверх
ProgrammingLife
  Дата 8.11.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.1.2008
Где: ЧИРЧИКАГО (UZ)

Репутация: нет
Всего: нет



мыслишь правильно .....но хэлпнуть нет силенки ....если бы знал точно помог бы Братка а так ...на словах нехочу выгледеть пузырем!поддержу тебя Отзовитесь уже сколко просмотров было не ужели не кто не сталкивался ...для чего форум то.....ХЭЛПНИТЕ!!!!!!!!!
PM MAIL ICQ   Вверх
Jamezzz
Дата 11.11.2008, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



Всё. Проблему решил. Всем спасибо. Нужно было сделать так:
Код

using System;
using System.Data;
using System.Windows.Forms;
using System.Collections.Generic;

namespace WindowsFormsApplication2
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    DataSet dataSet = new DataSet();

    private void Form1_Load(object sender, EventArgs e)
    {
      DataGridViewTextBoxColumn keyColumn = new DataGridViewTextBoxColumn();
      keyColumn.DataPropertyName = "Key";
      DataGridViewComboBoxColumn nameColumn = new DataGridViewComboBoxColumn();
      DataGridViewComboBoxCell nameColumnTemplate = new DataGridViewComboBoxCell();
      IList<Data> list = new List<Data>();
      list.Add(new Data() { Key = "1", Description = "Item #1" });
      list.Add(new Data() { Key = "2", Description = "Item #2" });
      list.Add(new Data() { Key = "3", Description = "Item #3" });
      nameColumnTemplate.DisplayMember = "Description";
      nameColumnTemplate.ValueMember = "Key";
      nameColumnTemplate.DataSource = list;
      nameColumn.CellTemplate = nameColumnTemplate;
      nameColumn.DataPropertyName = "Name";
      
      dataGridView1.Columns.Add(keyColumn);
      dataGridView1.Columns.Add(nameColumn);

      DataTable dataTable = new DataTable("table");
      dataTable.Columns.Add("Key", typeof(int));
      dataTable.Columns.Add("Name", typeof(string));
      dataSet.Tables.Add(dataTable);
      this.dataGridView1.DataSource = dataSet;
      this.dataGridView1.DataMember = dataTable.TableName;
    }

    private void button1_Click(object sender, EventArgs e)
    {
      dataSet.AcceptChanges();
      dataSet.WriteXml("dataSet.xml");
    }
  }

  public class Data { public string Key { get; set; } public string Description { get; set; } }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.