GRIDVIEW 模板列 里 控件 的事件问题

tm62490309 2008-12-19 03:19:32
此次用GRIDVIEW 在最后一个模板列里面 加了个LINKBUTTON
在页面上需要实现的效果是 当点了 某一列的某一个LINKBUTTON 之后
在GRIDVIEW的右边 需要显示出该行的相关信息 并且是需要访问数据库才能获取到的信息 也需要显示出来

如果只是纯粹的显示的话 可以 在RowDataBound事件里给 该控件注册一个JS方法就可以了 在JS里获取相关信息在绑定即可
但是需要访问数据库 才能获取其他信息. 或许有朋友会说 可以先在绑定时 把这些要的信息 先全隐藏在GRIDVIEW的列里面就可以了
可这是不允许的..
所以这种注册JS方法的 办法被否决了 也就必须在.cs 文件下写...
后来 考虑 给控件的CommandName 属性 设置值 比如update 这样的话 就可以在GRIDVIEW的GridView1_RowUpdated事件里做相应操作了
也就相当于是点了该控件的事件 但是 这样做的话 就无法获取到该列的ID的值 e.什么什么 就没有row这个属性 根本没法获取信息

特在此找各位CSDN高人求教高招
不知道还有没其他什么好的办法 或者在此基础上 该如何实现效果..小弟万分感激!!!!!!
...全文
224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
LinkButton的CommandArgument属性既然已经有它的作用了,最好要避免滥用这个属性,以免干扰正常的流程。你完全可以使用一个自定义属性来绑定和传递数据,例如我这里随便地就用了一个“我是谁”属性。
wuyq11 2008-12-19
  • 打赏
  • 举报
回复
protected void LinkButton1_Click(object sender, EventArgs e)
{
//行号
int row = ((GridViewRow)((LinkButton)sender).NamingContainer).RowIndex;
}
wuyq11 2008-12-19
  • 打赏
  • 举报
回复
参考
http://www.cnblogs.com/cameo/archive/2007/01/22/627102.html
  • 打赏
  • 举报
回复
[Quote=引用楼主 tm62490309 的帖子:]
在GRIDVIEW的右边 需要显示出该行的相关信息
[/Quote]

这个“右边”二字太含糊,无法检测出你要求的界面布局的基本方式,所以就不回复这个了。

对于LinkButton的事件中检测本行的信息以及本身的额外绑定的属性,其实很简单,你可以把下面的看作一个通用的此类编程模式:

            <asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("field_a") %>' ></asp:Label>
<asp:DropDownList runat="server" ID="myList" DataSource='<%# this.获取列表数据((string)Eval("field_b")) %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="Click Me" OnClick="胡乱点_Click" 我是谁='<%# Eval("field_ID") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>


在你的后台程序可以写:

    protected void 胡乱点_Click(object sender, EventArgs e)
{
LinkButton bt=sender as LinkButton;
string ID=bt.Attributes["我是谁"];
Label1 c1=bt.FindControl("Label1") as Label;
DropdownList c2=bt.FindControl("myList") as DropdownList ;
}


你可以看到,从sender可以得到绑定时给它特意增加的自定义属性值(数据源中field_ID列的值),而且可以得到同一行中的控件。
LeeeeSin 2008-12-19
  • 打赏
  • 举报
回复
up
koukoujiayi 2008-12-19
  • 打赏
  • 举报
回复
微软AJAX的ModalPopupExtender控件就是做这个事滴!!
很容易上手!!
zhoukewei90 2008-12-19
  • 打赏
  • 举报
回复
up
igelf 2008-12-19
  • 打赏
  • 举报
回复
 <asp:LinkButton ID="lbtnDel" runat="server" CommandArgument='<%# bind("id") %>' OnClick="lbtnDel_Click">Delete</asp:LinkButton>
tm62490309 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 igelf 的回复:]
把id绑定在LINKBUTTON 按钮的CommandArgument属性
后台事件.

C# code
protected void lbtnDel_Click(object sender, EventArgs e)
{
SQLDAL.ExecuteSql("delete from JobApplication where id=" + (sender as LinkButton).CommandArgument);
bind();
}
[/Quote]

我把控件的CommandName 设置成了update是在
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{}
这个方法下写的 事件
love_幸运儿 2008-12-19
  • 打赏
  • 举报
回复
使用DataKeys,设置ID,然后在GridView_RowUpdated里获取ID不可以吗?
igelf 2008-12-19
  • 打赏
  • 举报
回复
把id绑定在LINKBUTTON 按钮的CommandArgument属性
后台事件.
 
protected void lbtnDel_Click(object sender, EventArgs e)
{
SQLDAL.ExecuteSql("delete from JobApplication where id=" + (sender as LinkButton).CommandArgument);
bind();
}

62,074

社区成员

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

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

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

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