c# - RegisterForEventValidation .net 3.5 gridview 行,如何?

标签 c# visual-studio-2008 .net-3.5 gridview

我有一个 gridview 控件,在我的原始构建中我设置了网格属性:

AutoGenerateSelectButton="True"

这很好,让我能够在我的 gridview 中选择一行时进行回发。然而,我并不高兴,因为它真的不像一个漂亮的列表,我希望用户能够单击行中的任意位置来选择它,而不是必须选择“那个”选择按钮。所以我查看了底层代码,找到了选择按钮调用的函数并将其添加到 RowDataBound 事件中:

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("onclick", "javascript:__doPostBack('grid','Select$" + e.Row.RowIndex + "')");
        }
    }

太棒了,然后我删除了“选择”按钮,现在我收到了错误

Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

好的,所以我在网上进行了研究,发现我需要注册事件(是的,被调用的 javascript 仍然存在)所以我添加了这段代码:

<script runat="server">
    protected override void Render(HtmlTextWriter writer)
    {
        foreach (GridViewRow r in grid.Rows)
        {
            if (r.RowType == DataControlRowType.DataRow)
            {
                Page.ClientScript.RegisterForEventValidation(r.UniqueID);
            }
        }

        base.Render(writer);
    }
</script>

但我仍然遇到同样的错误。如何正确注册事件以便删除选择按钮?谢谢。

最佳答案

C# 中的解决方案:

protected override void Render(HtmlTextWriter writer) {

    foreach (GridViewRow r in gridviewPools.Rows) {
        if (r.RowType == DataControlRowType.DataRow) {
            Page.ClientScript.RegisterForEventValidation(gridviewPools.UniqueID, "Select$" + r.RowIndex);
        }
    }

    base.Render(writer);
}

关于c# - RegisterForEventValidation .net 3.5 gridview 行,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110637/

相关文章:

c# - [C#] 为 openOffice Calc 导出 xls 中的 DatagridView

c# - 如何使用 WCF 签署 SOAP 请求

c++ - 将 MFC/ATL 代码转换为 Windows 窗体应用程序

c++ - 为什么这样的循环在输入字符串时不会捕获错误?

.net - .Net Framework 配置工具发生了什么变化?

c# - 确定事件处理程序的优先级

c# - 通过 C# 和 UTF-8 字符集的 HttpWebRequest

c# - 如何从 C# 中的 MethodCallExpression 调用方法

c# - Http 处理程序加载错误

c++ - Visual Studio 2008 C++ 依赖项