Asp.net 将函数放在类中而不是放在代码后面
我在代码隐藏文件中有一个函数,用于响应gridview事件:Asp.net 将函数放在类中而不是放在代码后面,asp.net,Asp.net,我在代码隐藏文件中有一个函数,用于响应gridview事件: protected void GridviewEval(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { foreach (TableCell cell in e.Row.Cells) { if (cell.Text == "0") { cell
protected void GridviewEval(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
if (cell.Text == "0") { cell.Text = "-"; }
}
}
}
它当前位于页面的代码隐藏中,我将在其他页面中使用它。我想在其他页面中使用相同的代码。当我将函数剪切并粘贴到类中时,它不起作用
我相信这很简单,但我搞不懂
谢谢。至少有两种方法。或者从您创建的类派生页面代码隐藏类并将代码移动到该类,或者使用代理机制,其中您有一个单独的类,一个单例类或一个静态类,并让页面中的方法简单地充当代理,将调用传递给singleton/static类。此方法很容易是静态的,因此在静态类中只需一个静态方法,您就可以自由使用
public static class CommonEventHandlers
{
public static void GridviewEval(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
if (cell.Text == "0") { cell.Text = "-"; }
}
}
}
}
然后在gridview的页面上,像这样连接事件
myGrid.SomeEvent += new SomeEventHandler(CommonEventHandlers.GridviewEval)
您能在外部类中显示代码吗?只是澄清一下:在新页面中为gridview事件之一连接事件处理程序,然后将调用转发到已提取到类模块中的方法?看来这应该行得通。还有别的事吗?也许您可以在“GridHelper”类中发布gridview的标记、事件处理程序和方法声明。当我将其放入类文件中时,void关键字用红色下划线标出,并显示消息Expected class、delegate、enum…您记得将方法放入类中吗?从技术上讲,没有类文件这样的东西。Visual Studio在其“新项”列表中有它,但它只是一个编译器将编译的扩展名为.cs的文本文件。它告诉我GridViewRowEventArgs和DataControlRowType不是上下文的一部分,缺少指令。我尝试添加一些“using”子句,但我想我没有把正确的放在适当的位置。我很困惑。如果你连基本知识都没有,那就不容易了。。。using指令(C#Reference)您需要一个using指令来指定类型所在的名称空间。