我的应用程序是ASP.Net,C#,Webforms。
我有一个Gridview - 名为gvCustNames
我将gridview设置为在OnDataBound="setRowColor"
这是我的C#语法:
protected void setRowColor(object sender, GridViewRowEventArgs e)
{
foreach (GridViewRow row in gvCustNames.Rows)
{
CheckBox chkRow = (row.Cells[3].FindControl("cbViewCutsomer") as CheckBox);
if (chkRow.Checked)
{
e.Row.BackColor = System.Drawing.Color.PaleGreen;
}
}
}
应用程序编译好了没有错误但是当我尝试在浏览器中查看它时出现此错误:
方法或委托
sbmanager.cm.setRowColor(object, System.Web.UI.WebControls.GridViewRowEventArgs)' parameters do not match delegate
System.EventHandler(object,System.EventArgs)'参数
这意味着我没有使用正确的事件处理程序。 我应该使用什么处理程序?
答案 0 :(得分:2)
您正在处理OnDataBound,一旦整个GridView完成数据绑定过程就会调用它。确实期待EventArgs参数。这就是错误的原因。现在您有两个选择:
简单。用EventArgs替换GridViewRowEventArgs。请务必同时使用e.Row
更改row
。
可能更清楚。无论如何,您正在遍历所有行,那么为什么不处理OnRowDataBound呢? Args保持不变,不需要循环:
protected void setRowColor(object sender, GridViewRowEventArgs e)
{
CheckBox chkRow = (e.Row.Cells[3].FindControl("cbViewCutsomer") as CheckBox);
if (chkRow != null && chkRow.Checked)
{
e.Row.BackColor = System.Drawing.Color.PaleGreen;
}
}