问题标签 [dynamic-controls]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 控件不会出现在动态创建的用户控件上
我有一个名为 DateTimeUC 的用户控件,它的标记上有两个文本框:
我在另一个用户控件中动态创建此控件:
但是当我渲染页面时,DateTimeUC 什么都不渲染。我是这样检查的:
s 为空,Controls.Count 为 0。我做错了什么?
asp.net - 如何从动态添加的文本框中检索数据?
我将文本框(不是固定数量的文本框)动态添加到 ASP.NET 页面上的表单中,我如何从这些文本框中读回数据?
c# - 将动态控件插入控件集合的中间
这是我的第一篇文章!我非常绝望,所以我超越了我的标准谷歌搜索。我相信这是一个高级或专家级的 .NET 问题。
问题是我已经构建了一个 .NET Web 应用程序,它需要能够将用户控件动态插入到列表的中间。我对动态控件很满意,只要将它们添加到列表的末尾(即:我熟悉这样的文章:http: //msdn.microsoft.com/en-us/library/ ms972976.aspx)。但是,如果我需要将 UserControl 添加到 Controls 集合的前面或中间的某个位置,我几乎会迷失方向,因为控件的 UniqueID 被丢弃了。
作为一个简化的示例,假设我有一个面板,我正在向其中添加一个名为 MyControl.ascx 的用户控件列表。我还有一些可以在页面上触发的事件,需要将 MyControl.ascx 动态插入到面板控件集合的指定索引中。我还需要订阅 MyControl.ascx 上的一个或多个事件。这意味着需要在这些控件上的事件触发之前加载控件,否则它们将不会触发。如果您不知道我指的是什么,那么我要么措辞不佳,要么这个问题对您来说太难了:)
下面是一些 C# 伪代码来演示该问题。问题是 Controls.AddAt(index, control) 方法不会相应地调整控件的 UniqueID 值。例如,考虑 Controls 集合中的以下控件:
无论我是否实际编写直接依赖于 UniqueID 的代码,.NET 都间接使用 UniqueID 将在前一个回发中触发的事件与在新回发中加载的控件链接在一起。以我之前的例子:
在初始Page Load (Page.IsPostback == false)
Page.IsPostback == false
在某个其他控件想要在索引 0 处插入控件的回发 ( ) 之后:
如果我这样做,Controls.AddAt(0, newControl)
那么 Controls 集合看起来像这样:
因此,如果我使用 Value == value0 和 UniqueID == ctl03 单击控件中的链接按钮,则控件将在回发时按以下顺序排序,并且 UniqueID 不会按我想要的顺序排列。这将导致点击事件附加到错误的控件:
如果我不必处理来自这些动态控件的事件,这可能不会成为问题。这是我的代码:
请帮忙。这个要死我了。如果您需要更多信息或有疑问,请告诉我,我很乐意提供更多信息。非常感谢您的帮助!
.net - 在 Visual Basic 中连接按钮和文本框
我坚持这个要求我创建一个文本框和一个按钮的练习。每次按下按钮时,都应该在文本框中添加 1。有谁知道如何解决这个问题?
c# - 在 C# 中动态创建的用户控件
我在一个 C# winforms 项目中工作,我有一个用户控件,它在从工具条菜单中选择时加载。我有一个字典查找设置在用户控件的表单加载时发生以获取其他功能。另外,当我关闭用户控件时,我只是在使用“.Hide();” 方法。我注意到,当我第一次加载用户控件时一切都很好,但是当我关闭它并选择第二次再次打开它时,它会创建一个新的对象实例,从而放弃我的字典查找。因此,我编写了一些代码试图解决这个问题。
我需要做的是以某种方式说如果用户控件的实例已经存在,则不要创建该对象的新实例。相反,只需使用户控件再次可见。因此,我编写了代码以尝试实现此目的。当我第一次选择该项目时,一切都很好。当我隐藏用户控件并尝试再次重新打开它时,没有任何反应。
以下是我为此目的编写的代码,它发生在从工具条菜单中选择项目时:
当我在调试器中跟踪我的代码时,它实际上是碰到了上述 if/else 语句的正确部分。我第二次尝试加载它时,它只是没有在屏幕上显示用户控件。
问题是:如何在关闭用户控件后正确加载它,然后再次从工具条菜单中选择它?
asp.net - 在 OnLoadComplete 中的动态链接按钮上添加 ClickEvent
我正在 ASP.Net 中创建一个文件浏览器,但我遇到了一个我认为与动态控件上的事件关联有关的问题。我将在这里解释我的代码的作用:
当我的页面加载(OnLoad)时,我调用一个方法(createStuff())创建许多链接按钮(代表当前目录中的文件夹),这些链接按钮连接到将当前目录更改为与链接按钮关联的事件的事件.
由于在调用 OnLoad 后会触发链接按钮单击事件(因此当前目录在 onload 后首先更改),因此链接按钮不会更新以反映新的当前目录(它们是在单击更改当前目录之前创建的-事件)。因此,我还在 OnLoadComplete 中调用 createStuff() 导致链接按钮被更新并反映新当前目录中的文件夹。
但是(这是我的问题)似乎我在 createStuff() 中执行的事件连接(Click += new EventHandler(changeDirectory))在 OnLoadComplete 中调用该方法时并没有真正起作用(在链接按钮之后调用 OnLoadComplete -点击事件已被触发)。结果是,虽然链接按钮的文本属性反映了新目录中的文件夹,但单击链接按钮不会触发事件。
我该如何解决这个问题?我尝试在 OnLoad 中重新连接 LinkButtons 上的事件,但结果相同。
先感谢您
丹麦西蒙
c# - 从动态控件获取用户输入
我正在寻找创建一个动态调查。我从数据库生成所有问题控件的地方。下面是我正在尝试做的一个例子(没有数据库部分)。我可以显示如下所示的问题。我无法阅读用户输入。
有没有人有任何想法。
我已经查看了视图状态,但我似乎无法让它工作。
当页面通过 Post Back 重新加载时,控件就消失了。我查看了我能想到的每一个事件,并且页面上没有控件。直到我在 Page_Load 事件上再次创建它们。
我在哪里可以找到动态创建的控件上的用户输入值?
页
代码文件
c# - 如何将 PostBack 数据拉入动态添加的 UserControl (.NET)?
我的页面上有一个面板:
然后我在 Page_Load 上动态添加一个 TextBox:
有没有办法在不直接从 Request.Form 中提取的情况下提取在此 TextBox 中键入的信息?我想在我再次添加后我可以做这样的事情:
我知道这个例子似乎是做作的,但我想我会尝试消除我的特定应用程序中的所有其他变量,尤其是在这里提出问题。
asp.net - ASP.NET - 如何动态生成标签
我正在做一个关于航班预订系统的项目。我的职责是输入旅行乘客的详细信息。这些乘客可能包括成人和儿童。所以我需要为所有旅行的乘客动态生成单独的标签和文本框,以便输入所有乘客的详细信息。
我怎样才能做到这一点?
asp.net - Using FindControl on Dynamically Generated Controls
I have some ASP.NET code that dynamically generates rows and cells for a Table control on the page.
I have specifically set the ID of each cell, but I am having trouble getting FindControl to actually find them.
Here's the code that I use to create the cells:
Just below that, I try to find the control with the following:
I have tried swapping the line that declares the ID, with the line that adds the cell to the Cells collection of the TableRow, and that makes it work. But throughout my application, I have the statements in the order as above, and they works fine (FindControl can find the control with the correct ID).
Is there something obvious I am missing?