您必须注册一个事件处理程序来处理事件。但是您没有向我们展示 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];
除此之外,您还应该使用 Dragan 提到DataBind
的网格(默认)。if(!IsPostBack)
ViewState