Замена данных при обновлении в представлении таблицы данных с использованием c # - PullRequest
0 голосов
/ 16 декабря 2018

enter image description here

Выше изображения 0 и 1 из базы данных при отображении значения в виде сетки данных 1 заменяется высоким, а 0 заменяется низким, я понятия не имеюэто поможет мне решить это

            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select dataa from new";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            con.Close();

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете обрабатывать дело, используя различные решения, в том числе:

  • Использование DataGridViewComboBoxColumn (→ Предпочтителен, если вам нужно редактирование)
  • Использование CellFormatting (→ Предпочтителен, если вам не нужноредактирование)
  • Изменение запроса на возврат отформатированных данных (→ полезно для данных только для чтения)

Вариант 1 - использование DataGridViewComboBoxColumn

Добавить DataGridViewComboBoxColumn:

var c = new DataGridViewComboBoxColumn();
c.DataPropertyName = "Column1"; //Name of your data column
c.HeaderText = "Column1";       //Header text of your data column
c.DataSource = new[] {
    new { Key = 0, Name = "Low" },
    new { Key = 1, Name = "High" } }.ToList();
c.ValueMember = "Key";
c.DisplayMember = "Name";
c.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;  
//You can try other styles as well as setting `ReadOnly` to true
dataGridView1.Columns.Add(c);

Вариант 2 - Использование форматирования ячеек

Другой вариант будет использовать событие CellFormatting:

dataGridView1.CellFormatting += (obj, args) =>
{
    try
    {
        var value = Convert.ToInt32(args.Value);
        if (value == 0)
            args.Value = "Low";
        if (value == 1)
            args.Value = "High";
        return;
    }
    catch (Exception) { }
    args.Value = "Unknown";
};

Вариант 3 - Изменить запрос

Вы можете изменить свой запрос для получения отформатированных данных, например, используя CASE:

SELECT CASE [YourColumn] WHEN 1 THEN 'High' WHEN 2 THEN 'Low' END AS Column1
FROM [YourTable]

Пример вывода

Для всех вышеперечисленных кодов вы можете загрузить данные из базы данных или просто для проверки использовать следующие тестовые данные: *

var dt = new DataTable();
dt.Columns.Add("Column1", typeof(int));
dt.Rows.Add(1);
dt.Rows.Add(0);
dt.Rows.Add(0);
dt.Rows.Add(1);

и убедиться, что вы установили источник данных:

dataGridView1.DataSource = dt;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...