问题标签 [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.

0 投票
2 回答
286 浏览

c# - 好的,我应该在哪里创建动态控件

我刚刚在关于动态控制的两个问题上很活跃,答案几乎总是关于在回发时重新创建,问题是这个的正确位置在哪里

这是两个 SO 问题

问题一

问题2

我们总是通过重写CreateChildControls来创建动态控件

浏览了反射器中的很多控件,主要是 Telerik 控件,我一直认为这是正确的,但是很多人说它们应该在 Init 中创建。

我应该继续使用 CreateChildControls 还是 Init 是正确的方式......为什么这看起来如此混乱......

0 投票
1 回答
2001 浏览

wpf - 通过 FindName() 查找动态生成的 Wcf 控件

在父控件中查找控件的 FramworkElement.FindName() 方法似乎应该直截了当......

但是我正在提高anty,似乎框架不喜欢我正在尝试做的事情。

首先,我确实意识到有很多不同的做事方式,请记住这是我在 WPF 中创建的第一个表单。

我正在根据集合中的项目数将控件加载到 StackPanel 中。此方法是必须的,因为集合由 [用户输入的 Url] 中的目录数量决定。

该列表将水平堆栈面板构建为在设计期间放置在表单上的垂直堆栈面板。

所以 dirStackPanel 在表单上。我将 controlStackPanel 插入 dirStackPanel n 次,并用识别名称命名每个:(字符串)(“controlStackPanel”+ n)。

我也在用控件填充 controlStackPanel,但考虑到我无法按名称从其父级 (dirStackPanel) 检索 controlstackPanel,这是一个有争议的问题。

例子:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))返回空值

需要明确的是,我在运行时插入的每个控件都被分配了一个名称,并且可以使用循环轻松检索。但是 FindName 方法不适用于父“StackPanel”的第一个子控件。它不断返回 null 而不是对象。

有任何想法吗?

0 投票
2 回答
8524 浏览

asp.net - 如何使用 VB 在 asp.net 3.5 中引用动态创建的控件

我正在编写一个将控件动态插入到网络表单的程序。根据变量,我添加一个文本框、一组单选按钮或一组复选框。稍后,在用户单击提交按钮后,我需要使用控件来确定用户是否提交了正确的答案,但是当我尝试引用控件的 id 时,我得到“txtAnser is not declared. It may be inaccessible”由于它的保护级别。

这是 .aspx 页面(它是母版页的标准内容页面):

这是后面的代码,我在提交按钮单击事件中遇到问题,我尝试在 select case 语句中引用 txtAnswer 控件:

如果有人能指出我需要做什么,我将不胜感激。

谢谢,西蒙

0 投票
3 回答
909 浏览

asp.net - ASP.NET / C# 对动态创建的控件的混淆

我一直在使用默认的 ASP.NET Web 应用程序模板,以下代码引发异常:

你调用的对象是空的。

单击创建的按钮时。

谁能提供技术解释?

注意 1:标记只是一个带有占位符的空白页面 - 见下文。

注意2:替换ButtonLinkButton,代码不会抛出异常并且可以正常工作。

标记:

0 投票
3 回答
9625 浏览

c# - 动态创建控件并跨回发保存控件值 - ASP.Net C#

考虑一下 -

我允许最终用户通过获取一些详细信息在 ASP.Net 页面中动态创建选项卡控件。对于添加的每个选项卡,我都会得到一些设置 -

  1. 标签标题
  2. 标签内容
  3. 标签页脚链接

所以我得到了每个标签的这些细节。向用户提供了一个按钮“添加选项卡”到多个选项卡。所以我需要在页面中再添加一个选项卡设置面板来获取选项卡设置。但是这样做,我会丢失在先前创建的动态选项卡设置面板中输入的值。用户可以添加尽可能多的选项卡并为每个选项卡输入设置。最后,当他们保存它时,我构建了选项卡控件(基于他们的设置和内容)并渲染了控件。

由于控件是动态的,我可以选择两个选项 -

  1. 在添加第 n 个选项卡时重新创建以前创建的 n - 1 个选项卡设置面板。因此,在每次回发中,我都需要为每个选项卡重新创建设置面板。但我不知道如何在这种情况下坚持价值观。
  2. 使用简单的 html 控件在客户端添加设置面板,并在页面 UnLoad 解析控件 -> 解析设置 -> 将其保存在隐藏字段中 -> 在服务器端获取它。在这种情况下,我失去了需要为控件编写验证脚本的所有服务器端功能。

关于如何更好地做到这一点的任何见解?

0 投票
1 回答
1383 浏览

asp.net - 动态控制示例。PreRender 后可能无法注册脚本控件

创建动态 ajax 控件时,您可能会在回发时遇到预渲染问题。您应该在回发时重新创建控件,但是如果其中有很多控件,则每次回发之间的性能会变得非常慢。即单击组合框,可能需要几秒钟。所以我所做的是将控件分组到面板中,将面板存储在一个集合中,然后在回发时重新调用面板。如果面板内的控件是标准的 html 控件(文本框、下拉列表等),这实际上效果很好。但是……还不能很好地与 ajax 控件一起使用。

我在下面包含了一个示例。取消注释/注释代码以测试它。如果有人知道如何使用 ajax 控件进行这项工作,那就太好了。

0 投票
1 回答
3315 浏览

c# - 在 ASP.Net 中动态呈现时 CheckBoxList Items 和 TableRows 有什么区别?

我正在稍微改变 ASP.Net 网站中页面的功能。在原始页面中有一个复选框列表写入页面,没有硬编码的项目。

相反,在初始渲染时,cbl 将数据绑定到查询结果,因此:

在回发以下代码:

愉快地浏览复选框列表中的动态数据绑定列表项并检索选中的值。我尝试做同样的事情,在页面上放置一个空表,然后动态创建行:

唯一的问题是,当迭代器来到表时,它只读取硬编码的标题行。(不过,该表格在原始页面上的所有正确属性都呈现得很漂亮。)

这是尝试读取表行的代码:

除了调试标签检查很高兴地告诉我只有一行而且它是硬编码的标题行。所以基本上不会读取其他行,因为在读取它们时页面似乎不相信它们存在。

那么为什么它不能与桌子一起使用呢?或者,如果它不能与表格一起使用,通常原因是事情不适用于回发的动态控件,例如渲染、生命周期等,为什么它可以与复选框列表一起使用?

0 投票
4 回答
6853 浏览

c# - 如何持久化动态控件(c#)

根据标题,我创建了一个自定义控件。

在某个按钮单击事件上,此控件被实例化,然后添加到页面中。

它是一个动态控件,具有自己的按钮事件。

为了触发这些按钮事件,控件必须在Page_Load/结束时绘制OnLoad,在随后的 page_load / onload 生命周期阶段。

我的问题是如何保持这个控制?我不能将它存储在Session对象中,因为它包含不可序列化的项目。

0 投票
2 回答
5467 浏览

c# - 将文本框动态插入到中继器中并检索它们的值

我有一个从 SQL 绑定的中继器,其中包含可编辑和只读元素的混合。当您单击一行上的“编辑”按钮时,可编辑部分应转换为文本框,当您单击“更新”时,它应保存您的更改。

这是编辑和更新按钮的 OnClick 代码的(非常)简化版本:

问题是当页面回发时我的动态添加的文本框不存在。我PlaceHolder1.Controls在调试器中检查过,里面没有文本框。PlaceHolder1它本身在一个中继器内,但我没有在 PostBack 上重新绑定中继器。

我考虑过使用原始 HTML 代替 TextBox 控件并将值从 Request.Form 中提取出来,但这对我来说感觉很生硬。如何使动态添加的文本框在回发中持久化?


编辑:

这里有一些复杂性,如果没有大量示例代码,很难显示出来。这里是大的:

  • 中继器中的每个单元格都可以混合使用只读和可编辑文本(即动态插入的标签和文本框)
  • 我不知道每个单元格中有多少可编辑区域。原始文本可能看起来像blah blah @A1@ blah blah @A2@ blah...,我必须插入替换文本来代替 @A1@、@A2@ 等。在编辑模式下,只有替换文本是可编辑的。
0 投票
1 回答
1006 浏览

css - 未为动态生成的控件恢复背景颜色 (ASP.NET)

<TABLE>在 ASP.net 中动态生成一个。根据某些事件,我需要突出显示(通过背景颜色)有<TD>问题的特定单元格并取消突出显示任何先前选择的单元格。

可悲的是,在每个事件之后,之前选择的单元格仍然突出显示。我编写了一小段代码,用 2 个模拟两个事件实例的按钮来复制我的问题。

创建表...

我在此事件中突出显示第一个单元格

我在此事件中突出显示第二个单元格。第一个单元格不应再突出显示,因为我刚刚在回发时重新创建了此表!

任何帮助或指示将不胜感激!实现预期效果的替代方法也将受到欢迎!