イベントを処理するには、イベント ハンドラーを登録する必要があります。ただし、aspx マークアップを表示していないため、ハンドラーを宣言的に追加していない可能性があります。
<asp:gridview id="GridView1"
onrowdatabound="GridView1_RowDataBound"
runat="server">
</asp:gridview>
void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
// e.Row is the GridViewRow
e.Row.BackColor = System.Drawing.Color.Green;
}
}
更新理由はIndexOutOfRangeException
、最初の行が作成される前にアクセスしているためです。
GridViewRow grv=GridView1.Rows[0];
これは厄介なものです。は、 だけでなく、 、およびに対してもRowDataBound
呼び出されます。最初に作成されるのは. しかし、=でのみ返されます。したがって、行の作成中に最初の「データ行」にアクセスしようとしています。GridViewRow
DataItems
Header
Footer
Pager
Header
GridView.Rows
GridViewRows
RowType
DataRow
header
修正するには、上記のコードを使用してRowType
.
if(e.Row.RowType == DataControlRowType.DataRow)
{
// now you ca safely access the first row in this way,
// altghough i assume that you should use my code above
// to set the color of every GridViewRow
GridViewRow grv=GridView1.Rows[0];
それとは別に、(デフォルト)を使用している場合は、ドラガンが言及したようDataBind
にグリッドのみを使用する必要があります。if(!IsPostBack)
ViewState