2017-02-04 19 views
2

При запуске приложения возникла ошибка.Невозможно установить ширину столбца в GridView ASP.NET (Нет DataSource для GridView)

Я пытаюсь установить ширину первого столбца моего GridView, но я не могу этого сделать.

Строки, столбцы, данные этого GridView не ограничены каким-либо источником данных.

//By Class Statistics 

int A1Available = get.countAvailA1(); 
int A1Alloted = get.countUnavailA1(); 
int B1Available = get.countAvailB1(); 
int B1Alloted = get.countUnavailB1(); 
int B2Available = get.countAvailB2(); 
int B2Alloted = get.countUnavailB2(); 
int C1Available = get.countAvailC1(); 
int C1Alloted = get.countUnavailC1(); 

DataTable dtClass = new DataTable(); 
dtClass.Columns.Add("Class"); 
dtClass.Columns.Add("A1"); 
dtClass.Columns.Add("B1"); 
dtClass.Columns.Add("B2"); 
dtClass.Columns.Add("C1"); 

DataRow r; 
r = dtClass.NewRow(); 
r["Class"] = "Number of Available Beds"; 
r["A1"] = A1Available.ToString(); 
r["B1"] = B1Available.ToString(); 
r["B2"] = B2Available.ToString(); 
r["C1"] = C1Available.ToString(); 
dtClass.Rows.Add(r); 

r = dtClass.NewRow(); 
r["Class"] = "Number of Unavailable Beds"; 
r["A1"] = A1Alloted.ToString(); 
r["B1"] = B1Alloted.ToString(); 
r["B2"] = B2Alloted.ToString(); 
r["C1"] = C1Alloted.ToString(); 
dtClass.Rows.Add(r); 

bedStats.DataSource = dtClass; 
bedStats.DataBind(); 
bedStats.Columns[1].HeaderStyle.Width = new Unit(55, UnitType.Percentage); 

Этот код используется для установки ширины. Есть ли другой способ? Не было беспокоить о стоимости, просто установив ширину ..

bedStats.Columns[1].HeaderStyle.Width = new Unit(55, UnitType.Percentage); 

Изображение ошибки

<code>enter image description here</code>

+0

Глядя на скриншот, 'bedStats.Columns [1]' похоже, проблема. Если вы только точка разрыва в этой строке и проверьте столбцы 'bedStats', прежде чем пытаться получить доступ ко второму столбцу ([1]). Что ты видишь? –

+0

Я добавил точку останова, глядя на авто, могу я спросить, что нужно? @FredrikLundin – domster

ответ

1

значения столбцов Установка будет работать только с TemplateField и BoundField колонн. Автогенерированные столбцы не являются частью коллекции столбцов в GridView. Если вы хотите покрасить заголовки, вам нужно использовать событие OnRowDataBound. Только тогда вы можете получить доступ к столбцам.

protected void bedStats_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     e.Row.Cells[1].Width = new Unit(55, UnitType.Percentage); 
     e.Row.Cells[1].BackColor = Color.Pink; 
    } 
} 
+0

спасибо, исправно! – domster