首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridView中的OnRowClick不会接管按钮点击吗?

GridView中的OnRowClick不会接管按钮点击吗?
EN

Stack Overflow用户
提问于 2011-08-06 00:09:19
回答 3查看 1.8K关注 0票数 0

我有一个包含在UserControl中的C#/ASP.net GridView。以我现在的方式,gridview将添加一个onrowclick属性,如下所示:

代码语言:javascript
复制
protected void _gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.GridView, "EditRow$" + e.Row.RowIndex);
}

但是,当此单击事件发生时,由于EventValidation,我收到一个无效的回发错误。此外,我在行上有使用GridViewRowCommands重定向到其他页面的按钮。不幸的是,我也不能让两者一起工作( RowCommand函数从不运行)。

例如,这是我将使用的处理程序:

代码语言:javascript
复制
protected void _gridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if (e.CommandName.ToString() == "EditRow" && e.CommandArgument.ToString() == "0")
      Response.Redirect(anotherURL);
   if (e.CommandName.ToString() == "BACK" && e.CommandArgument.ToString() == "0")
      Response.Redirect(thisURL);
}

这是我在行中使用的一个按钮:

代码语言:javascript
复制
<asp:Button ID="_AddButton" runat="server" CommandName="BACK" CommandArgument="0" Text="Add" />

理想情况下,row-onclick也会使用这个GridViewRowCommands,这样我就可以在一个地方处理所有重定向。然而,我不确定该怎么做。对于更好的方法有什么建议吗?

感谢您的持续支持!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-06 00:20:00

我不确定如何添加评论,所以答案将不得不这样做。

你是说它没有命中RowCommand方法之类的吗?如果不是,我会考虑通过Page Init以如下方式连接事件。

代码语言:javascript
复制
GridView1.OnRowCommand += _gridView_RowCommand
票数 0
EN

Stack Overflow用户

发布于 2011-08-06 02:52:48

在page指令中,添加以下内容:

代码语言:javascript
复制
EnableEventValidation="false";

在那之后应该会工作得很好。这可能是解决问题的最简单方法。

你也可以这样做:

代码语言:javascript
复制
e.Row.Attributes["onclick"] = "javascript:onRowClick('" + e.Row.RowIndex + "');";

在ASPX中,添加一个JavaScript函数:

代码语言:javascript
复制
onRowClick = function(rowIndex){
   __doPostBack("<%=dataGridView1.UniqueID%>", rowIndex);
}

最后,在后面的代码中,添加RaisePostBackEvent覆盖:

代码语言:javascript
复制
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    base.RaisePostBackEvent(source, eventArgument);

    int rowIndex = ToInt32.Parse(eventArgument);
    if (source is DataGridView)
    {
        if (source == dataGridView1)
        {
             GridViewRow row = dataGridView1.Rows[rowIndex];
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-05-23 23:40:35

我通过向每一行添加一个客户端单击事件来处理类似的问题。

  1. 将OnRowDataBound事件处理程序添加到网格视图。

单击OnRowDataBound事件处理程序,添加一个“OnRowDataBound="GridView_RowDataBound

  • In”属性,该属性获取记录的主键并在重定向URL中传递该主键。

protected void GridView_RowDataBound(object sender,GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { int id = Convert.ToInt32(e.Row.Cells.Text);e.Row.Attributes"onclick“= string.Format("javascript: window.location = 'Edit.aspx?id={0}'",id);} }

请注意,这假设网格视图的第一列是您的主键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6959299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档