用户控件中触发gridview行

jsjhj2008 2009-09-30 09:32:44
小弟在用户控件中有个gridview,单击选择的行,需要把每列的数据返回到我的textbox上面,但是,老是报“回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>”这种错误。

protected void GridViewJD_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
int index = e.NewSelectedIndex;
//this.Label_House.Text = GridViewJD.Rows[index].Cells[1].ToString();
}
protected void GridViewJD_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", "javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridViewJD','Select$" + e.Row.RowIndex.ToString() + "')");
}
}

我这样写是不是不对啊!首先我在源文件里找到<table cellspacing="0" cellpadding="4" rules="all" border="1" id="ctl00_ContentPlaceHolder1_ctl00_GridViewJD",ctl00_ContentPlaceHolder1_ctl00_GridViewJD这个ID号的,帮忙看下吧
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
没有十足的把握,不要硬拼凑回发的第二个参数值。把回发指向你的用户控件或者页面(上面的GetPostBackEventReference(this....);),进行统一处理,不要指向自己不能控制源代码的控件。
  • 打赏
  • 举报
回复
而对回发所提交的参数,不要乱设置。

给你将一个“全面解决方案”的回发知识,免得你总是去想办法“凑”那个什么"Select$"参数。

为你的用户控件声明使用IPostBackEventHandler接口,然后增加以下接口实现代码:
    #region IPostBackEventHandler Members

public void RaisePostBackEvent(string eventArgument)
{
if(eventArgument.StartsWith("选择GridView:"))
{
var rowIndex=int.Parse( eventArgument.Substring(11));
//.......处理这个rowIndex被点击的所有事件,例如设置GridView的SelectIndex,等等。
}

}

#endregion

这样,你的用户控件就可以处理发给用户控件的任何回发信息。接下来,你的处理GridView行的代码就可以修改为:
if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate))
e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackEventReference(this, "选择GridView:" + e.Row.RowIndex.ToString());

当一行被点击的时候,它通知用户控件处理。
  • 打赏
  • 举报
回复
“首先我在源文件里找到 <table cellspacing="0" cellpadding="4" rules="all" border="1" id="ctl00_ContentPlaceHolder1_ctl00_GridViewJD",ctl00_ContentPlaceHolder1_ctl00_GridViewJD这个ID号的”

每当我在csdn中看到这类回复,就好像吃了苍蝇一样。这就好像是看到了许多Response.Write(....)代码一样。

输出回发脚本,在asp.net中使用GetPostBackEventReference方法,请记住这个知识。你不需要,也不允许去想当然地去“在源文件里找”那个客户端id。
jsjhj2008 2009-09-30
  • 打赏
  • 举报
回复
enableEventValidation="false"这个在哪里加啊!加在webconfig中吗
baoxuetianxia 2009-09-30
  • 打赏
  • 举报
回复
呵呵跟帖
jenny0810 2009-09-30
  • 打赏
  • 举报
回复
enableEventValidation="false"试试 以前遇到过设成false就好了
jsjhj2008 2009-09-30
  • 打赏
  • 举报
回复
当我点击每行数据的时候,去执行GridViewJD_SelectedIndexChanging,然后在这个函数就可以取到值的啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧