Пропадает текст из яйчейки в DataGridView

389
22 января 2017, 13:19

Собственно не могу понять почему происходит непонятное явление, при инициализации грида текст в ячейке появляется и сразу же исчезает.

DataSet ds = core.getBid(); 
dg_bid.DataSource = ds.Tables[0];
dg_bid.AllowUserToAddRows = false;
dg_bid.RowHeadersVisible = false;
dg_bid.ReadOnly = false;
DataGridViewTextBoxColumn navi;
navi = new DataGridViewTextBoxColumn();
navi.Name = "Navigation";
navi.DataPropertyName = "Navigation";
navi.HeaderText = "Маршрут";
navi.ValueType = typeof(string);
navi.ReadOnly = false;
navi.Visible = true;
navi.FillWeight = 250;

dg_bid.Columns["id"].Visible = false;
dg_bid.Columns["num"].HeaderText = "#";
dg_bid.Columns["create_date"].ValueType = typeof(DateTime);
dg_bid.Columns["create_date"].HeaderText = "Дата";
dg_bid.Columns.Add(navi);
for (int i = 0; i < dg_bid.Rows.Count; i++)
{        
    //Маршрут
    string bidID = dg_bid.Rows[i].Cells["id"].Value.ToString();
    string nav_text = core.navi(bidID).ToString();
    dg_bid.Rows[i].Cells["Navigation"].Value = nav_text;
}

Остальные колонки загружается нормально, непонятное только с созданной колонкой "Navigation", у грида стоит ReadOnly = false; Из-за чего может это происходить?

Answer 1
for (int i = 0; i < dg_bid.Rows.Count; i++)
{        
    //Маршрут
    string bidID = dg_bid.Rows[i].Cells["id"].Value.ToString();
    string nav_text = core.navi(bidID).ToString();
    ds.Tables[0].Rows[i].BeginEdit();
    dataSet11.Tables[i].Rows[0]["Navigation"] = nav_text;
    ds.Tables[0].Rows[i].EndEdit();
}
Answer 2

После определения источника данных DataSet ds = core.getBid(); Добавляем новую колонку в ds, т.к. ее не существует ds.Tables[0].Columns.Add("navigation");. Далее программно добавляем колонку в DataGridView:

DataGridViewTextBoxColumn navi = new DataGridViewTextBoxColumn();
navi.Name = "Navigation";
navi.DataPropertyName = "navigation"; 
navi.HeaderText = "Маршрут";
navi.ReadOnly = true;

navi.DataPropertyName = "navigation"; Название колонки должно соответствовать названию созданной ранее колонки в Dataset для того чтобы данные данные из DataSet выводились в этот столбец сами.

Теперь записываем данные в эту колонку

for (int i = 0; i < dg_bid.Rows.Count; i++)
{
    //Маршрут
    string bidID = dg_bid.Rows[i].Cells["id"].Value.ToString();
    string nav_text = core.navi(bidID).ToString();
    ds.Tables[0].Rows[i].BeginEdit();
    ds.Tables[0].Rows[i]["navigation"] = nav_text;
    ds.Tables[0].Rows[i].EndEdit();
}

Теперь при выводе в гриде текст не пропадает в колонке.

Answer 3

Попробуйте в конце цикла добавить dg_bid.Update();

READ ALSO
Расширяемая Windows служба

Расширяемая Windows служба

Хочу сделать расширяемую Windows службу, которая при своем запуске динамически загружает Dll

336
Как ответить на CURL запрос в формате xml в php?

Как ответить на CURL запрос в формате xml в php?

пожалуйста помогите сформировать серверный часть кода я делаю CURL запрос

513
Возможно ли экспортировать данные из БД в Excel? [требует правки]

Возможно ли экспортировать данные из БД в Excel? [требует правки]

Возможно ли экспортировать данные из БД в Excel?

445
Laravel Passport oauth/authorize требует basic auth

Laravel Passport oauth/authorize требует basic auth

Коллеги, столкнулся с такой проблемойУстановил Laravel passport

531