Собственно не могу понять почему происходит непонятное явление, при инициализации грида текст в ячейке появляется и сразу же исчезает.
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; Из-за чего может это происходить?
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();
}
После определения источника данных 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();
}
Теперь при выводе в гриде текст не пропадает в колонке.
Попробуйте в конце цикла добавить dg_bid.Update();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей