我有一个包含在UserControl中的C#/ASP.net GridView。以我现在的方式,gridview将添加一个onrowclick属性,如下所示:
protected void _gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.GridView, "EditRow$" + e.Row.RowIndex);
}但是,当此单击事件发生时,由于EventValidation,我收到一个无效的回发错误。此外,我在行上有使用GridViewRowCommands重定向到其他页面的按钮。不幸的是,我也不能让两者一起工作( RowCommand函数从不运行)。
例如,这是我将使用的处理程序:
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);
}这是我在行中使用的一个按钮:
<asp:Button ID="_AddButton" runat="server" CommandName="BACK" CommandArgument="0" Text="Add" />理想情况下,row-onclick也会使用这个GridViewRowCommands,这样我就可以在一个地方处理所有重定向。然而,我不确定该怎么做。对于更好的方法有什么建议吗?
感谢您的持续支持!
发布于 2011-08-06 00:20:00
我不确定如何添加评论,所以答案将不得不这样做。
你是说它没有命中RowCommand方法之类的吗?如果不是,我会考虑通过Page Init以如下方式连接事件。
GridView1.OnRowCommand += _gridView_RowCommand发布于 2011-08-06 02:52:48
在page指令中,添加以下内容:
EnableEventValidation="false";在那之后应该会工作得很好。这可能是解决问题的最简单方法。
你也可以这样做:
e.Row.Attributes["onclick"] = "javascript:onRowClick('" + e.Row.RowIndex + "');";在ASPX中,添加一个JavaScript函数:
onRowClick = function(rowIndex){
__doPostBack("<%=dataGridView1.UniqueID%>", rowIndex);
}最后,在后面的代码中,添加RaisePostBackEvent覆盖:
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];
}
}
}发布于 2013-05-23 23:40:35
我通过向每一行添加一个客户端单击事件来处理类似的问题。
单击OnRowDataBound事件处理程序,添加一个“OnRowDataBound="GridView_RowDataBound
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);} }
请注意,这假设网格视图的第一列是您的主键。
https://stackoverflow.com/questions/6959299
复制相似问题