2017-02-04 17 views
2

アプリケーションの実行中にエラーが発生しました。GridView ASP.NETで列の幅を設定できません(GridViewのDataSourceなし)

GridViewの最初の列の幅を設定しようとしていますが、できません。

このGridViewの行、列、データは、DataSourceにバインドされていません。

//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'カラムを調べてから、2番目のカラム([1])にアクセスしようとしています。あなたは何を見ますか? –

+0

私は、自動車を見て、私は何が必要なのか尋ねるかもしれないブレークポイントを追加しました? @FredrikLundin – domster

答えて

1

TemplateFieldBoundField列で動作します。自動生成された列は、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

関連する問題