ASP.NET动态命令按钮事件未触发
发布时间:2020-12-16 03:56:46 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试动态创建命令按钮,但单击有问题的按钮似乎没有引发相应的CommandButton_Click事件.我注意到在SO的示例中,为Button.OnCommand以及CommandName和CommandArgument设置了属性,但它不是intellisense中的选项. 所以问题是,我在这里做错了什么(下面的代码
我正在尝试动态创建命令按钮,但单击有问题的按钮似乎没有引发相应的CommandButton_Click事件.我注意到在SO的示例中,为Button.OnCommand以及CommandName和CommandArgument设置了属性,但它不是intellisense中的选项.
所以问题是,我在这里做错了什么(下面的代码没有OnCommand),是否以其他方式访问 – 如果是这样,为什么我发现的例子都显示为.OnCommand? 编辑:进一步的帮助,我添加了处理程序,但事件仍未触发.这些按钮位于UpdatePanel中,并在每次回发时重建(与处理程序一起).我创建了一个简化的例子,我正在做的事情如下所示:如果按钮事件触发,它会将“EVENT FIRED”写入txtTestFired文本框 – 足以说我从未见过它.这真的让我疯狂,任何帮助都非常感激. .aspx文件 <form id="frmMain" runat="server"> <asp:ScriptManager ID="scmAddProducts" runat="server"> </asp:ScriptManager> <asp:updatepanel runat="server"> <ContentTemplate> <asp:TextBox ID="txtProduct" runat="server"></asp:TextBox> <br /> <asp:Button ID="btnAddItem" runat="server" Text="Add Line" /> <asp:TextBox ID="txtTestFired" runat="server"></asp:TextBox> <br /> <br /> <asp:Panel ID="pnlAddedLines" runat="server"></asp:Panel> </ContentTemplate> </asp:updatepanel> </form> .aspx.vb文件 Protected Sub btnAddItem_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles btnAddItem.Click Dim dtItems As New System.Data.DataTable If Session("Items") Is Nothing Then Dim dcColumn As New System.Data.DataColumn dcColumn.DataType = Type.GetType("System.String") dcColumn.ColumnName = "Product" dtItems.Columns.Add(dcColumn) Session("Items") = dtItems End If dtItems = CType(Session("Items"),System.Data.DataTable) Dim drRow As System.Data.DataRow drRow = dtItems.NewRow() drRow("Product") = txtProduct.Text dtItems.Rows.Add(drRow) Session("Items") = dtItems txtProduct.Text = "" End Sub Protected Sub Page_PreRender(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.PreRender If Not Session("Items") Is Nothing Then Dim dtItems As System.Data.DataTable = CType(Session("Items"),System.Data.DataTable) Dim iItemIndex As Integer = 1 For Each drRow In dtItems.Rows Dim btnClose As New Button btnClose.ID = "btnClose" & iItemIndex btnClose.CssClass = "formCloseButton" btnClose.Text = "X" AddHandler btnClose.Click,AddressOf Button_Clicked pnlAddedLines.Controls.Add(btnClose) btnClose = Nothing Dim txtProduct = New TextBox txtProduct.ID = "txtProduct" & iItemIndex txtProduct.CssClass = "formText" txtProduct.Text = drRow("Product") txtProduct.Columns = "40" pnlAddedLines.Controls.Add(txtProduct) iItemIndex += 1 Dim litHR = New Literal litHR.Text = "<hr />" pnlAddedLines.Controls.Add(litHR) litHR = Nothing Next End If End Sub Private Sub Button_Clicked(ByVal sender As Object,ByVal e As System.EventArgs) txtTestFired.Text = "EVENT FIRED" End Sub 解决方法
基本上你需要在页面加载时创建一次原始控件,以便能够处理按钮单击,然后需要清除控件并在按钮单击处理程序中重新生成它们或者像在预渲染时那样重新生成它们 – 我觉得点击处理程序更干净,所以你需要两个相同的代码(最好是重构为单独的方法)
以下示例意味着您需要进行最少的代码更改: Protected Sub Page_PreRender(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.PreRender If Not Session("Items") Is Nothing Then pnlAddedLines.Controls.Clear() GenerateControls() End If End Sub Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load If Not Session("Items") Is Nothing Then GenerateControls() End If End Sub Private Sub GenerateControls() Dim dtItems As System.Data.DataTable = CType(Session("Items"),System.Data.DataTable) Dim iItemIndex As Integer = 1 For Each drRow In dtItems.Rows Dim btnClose As New Button btnClose.ID = "btnClose" & iItemIndex (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC,自动完成文本框,缓存?
- asp.net – AttachDbFilename的问题是什么
- asp.net-mvc – 带有存储库和ninject的ASP.NET MVC Members
- asp.net – 寻找用于呈现显示对象视图的表单的代码
- iis – 在ASP类中处理End Request事件
- asp.net-mvc – 我如何UnitTest自定义ActionFilter?
- asp.net-web-api – 如何访问所有querystring参数作为字典
- asp.net-core – 带有ASP.NET身份3的JWT承载令牌
- 您认为ASP.Net技能的当前基准是什么?
- ASP.NET MVC中的QR代码生成
推荐文章
站长推荐
- asp.net-mvc-4 – MVC 4 – EF模型w / Spaces
- asp.net-mvc – 如何在MVC中实现工作单元:责任
- asp.net – 您是否将助手类存储在单独的程序集中
- asp.net-mvc – 检测到潜在的危险Request.Form值
- 使用FormsAuthentication.SetAuthCookie(用户名,
- ASP.Net应用程序的最佳菜单是什么?
- asp.net-mvc – SessionSecurityTokenHandler尝试
- asp.net – 本地化mvc中的默认模型验证2
- asp.net-mvc – 使用Url.action调用控制器方法时
- asp.net – Turn by Turn游戏:使用SignalR或Sig
热点阅读