**继承了DataGrid以后无法触发模板里LinkButton的OnCommand的事件??**

windancer 2003-12-29 10:38:10
我有一个MyDataGrid自定义控件,继承datagrid
Protected Overrides Sub CreateChildControls()
AddHandler Me.ItemDataBound, AddressOf DataBound
'这里对MyDatagrid做一些项目中通用的逻辑处理
End Sub

Protected Sub DataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
' 在这里做一些通用处理,比如没有记录时自动显示"没有记录"的字样
End Sub
现在这个MyDatagrid在显示列表方面都工作的很好,但是在我使用了一个带linkbutton的模板列,然后触发OnCommand事件的时候,OnCommand事件怎么也无法触发,现在找不到原因,急啊~~~!
<ItemTemplate>
<asp:linkButton id="Button1" runat="server" OnCommand="Reset_click" CommandArgument="1">触发Reset_click事件</asp:linkButton>
</ItemTemplate>
服务端:
Protected Sub Reset_click(ByVal sender As System.Object, ByVal e As CommandEventArgs)
Response.Write(e.CommandArgument)
End Sub

我用Datagrid也试过,是可以触发的,但是完全一样的搬到MyDatagrid里,就不行了,我比较了一下linkButton在datagrid里和在MyDatagrid里,输出到客户端的ID和在服务端的uniqueID格式都是相同的,希望大家能帮我分析一下.



...全文
70 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
windancer 2004-01-09
  • 打赏
  • 举报
回复
最近很忙,差点忘了揭帖:)
这个问题暂时解决了,最后把createchildcontrol()去掉,把里面逻辑代码移到oninit里,可以触发oncommand事件了,可是还是不明白怎么回事?而且就算CreateChildControl就算里面是空的也不行,一定要完全删掉才行。奇怪?!
揭帖先
windancer 2004-01-03
  • 打赏
  • 举报
回复
up
windancer 2004-01-03
  • 打赏
  • 举报
回复

楼上各位大大:
我似乎找到问题所在,可是还是没办法分析出解决方法
我将控件中的内容全部去掉,只留下下面这一段
<DefaultProperty("EnableHtmlEncode"), ToolboxData("<{0}:MyDatagrid runat=server></{0}:MyDatagrid>")> Public Class MyDatagrid
Inherits System.Web.UI.WebControls.DataGrid

End Class
结果ItemCommand时间可以触发了!

然后我加上
<DefaultProperty("EnableHtmlEncode"), ToolboxData("<{0}:MyDatagrid runat=server></{0}:MyDatagrid>")> Public Class MyDatagrid
Inherits System.Web.UI.WebControls.DataGrid
Protected Overrides Sub CreateChildControls()
'中间没有代码
End Sub
End Class
原来的问题又出现了,似乎事件无法触发与CreateChildControls()有关,
请各位大大不吝赐教!
Naola2001 2004-01-02
  • 打赏
  • 举报
回复
关注
windancer 2003-12-31
  • 打赏
  • 举报
回复
谢楼上的,试试先
hiaming 2003-12-31
  • 打赏
  • 举报
回复
用gshope(北京.Net) 的方法,
然后注意:
在 InitializeComponent()中,一定还得有下面一行

this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);

我这个是C#语法的,你自己改为VB.net
Lostinet 2003-12-31
  • 打赏
  • 举报
回复
那你是不是每次都帮定数据?
gshope 2003-12-29
  • 打赏
  • 举报
回复
这么做:<ItemTemplate>
<asp:linkButton id="Button1" runat="server" CommandName="aaa">触发Reset_click事件</asp:linkButton>
然后在DataGrid的ItemCommand事件里:
if(e.CommandName=="aaa")
........你的处理程序
windancer 2003-12-29
  • 打赏
  • 举报
回复
up一下!
windancer 2003-12-29
  • 打赏
  • 举报
回复
to: Lostinet(『 迷失网络 』)
谢谢,我照你说的方法做了,还是没用啊。
我现在的问题是"linkbutton的模板列触发OnCommand事件的时候,OnCommand事件怎么也无法触发",而ItemDataBound事件我是在控件内部能正常触发的。
Lostinet 2003-12-29
  • 打赏
  • 举报
回复
你应该在 OnInit里做这事:

Protected Overrides Sub OnInit(ByVal args As EventArgs)
Super.OnInit(args)
AddHandler Me.ItemDataBound, AddressOf DataBound
....

windancer 2003-12-29
  • 打赏
  • 举报
回复
to gshope(北京.Net):
谢谢,我照着你的方法做了,可是结果一样,什么也没有触发

<asp:linkButton id="Button1" runat="server" CommandName="Test">触发Reset_click事件</asp:linkButton>

Private Sub MyDg_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyDg.ItemCommand
◎ Response.Write(e.CommandName)'这里设了断点,可是没有进来
End Sub

62,051

社区成员

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

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

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

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