[英]Getting rowID value for a “checked” checkbox in GridView in ASP.Net
[英]Getting CheckBox value on Databound then setting the GridView row color if checked
我的应用程序是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)'的参数sbmanager.cm.setRowColor(object, System.Web.UI.WebControls.GridViewRowEventArgs)' parameters do not match delegate
这意味着我没有使用正确的事件处理程序。 我应该使用什么处理程序?
您正在处理OnDataBound,这将在整个GridView完成数据绑定过程后调用。 确实期待EventArgs参数。 这就是错误的原因。 现在,您有两个选择:
简单。 用EventArgs替换GridViewRowEventArgs。 确保还用row
更改e.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; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.