问题标签 [dynamic-usercontrols]

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 投票
1 回答
908 浏览

c# - 如何在给定路径的情况下获取用户控件的类型

有没有办法将用户控件的路径 ~/usercontrols/MyUserControl.ascx 转换为类型,如 typeof(MyUserControl)?

0 投票
2 回答
2831 浏览

asp.net - FindControl 找不到我动态添加的 UserControl

我正在开发一个项目,其中页面根据可用索引加载某些控件。加载发生在调用 PopulateSearchField 方法的页面加载中。

在此方法中,所有 UserControl 都使用以下方法添加到页面上: Page.LoadControl("path");

页面加载和所有必需的控件都在页面上。我的问题是,当用户单击“搜索”按钮时,会触发事件,并根据这些控件中的用户输入构建查询。不幸的是,该方法无法生成正确的查询,因为它无法找到页面上的任何控件。

使用临时 ControlCollection 变量,我可以看到页面上的控件数量为 3,而应该是 4 到 10。集合中的这 3 个控件是页面上的静态标签和按钮。

我不知道代码是否有问题,或者是否是页面周期问题,因为该解决方案曾经在框架 1.1 上工作。是的,我知道这不是最好的做法,但他们就是这样做的,我必须让它发挥作用。

我不确定是否是导致问题的迁移。

非常感谢,大卫!

0 投票
0 回答
205 浏览

c# - 检索项目控制虚拟路径

我在 C# 上工作。我的 asp.net 项目中有很多控件。我想将我的控件路径存储在数据库中。假设我的控件名称之一是 MyUserControl.ascx。它的路径是~/usercontrols/MyUserControl.ascx我想将此路径存储在数据库中。我知道如何在数据库中存储信息,但问题是我不知道如何获取路径。假设我添加了一个按钮,希望单击该按钮以显示我的项目根文件夹。从那里我想选择控件或页面来获取路径。如何获得路径?

  1. 按钮单击打开根文件夹。
  2. 选择控件在文本框中获取该控件的路径
0 投票
1 回答
2696 浏览

wpf - 使用 MVVM Light Toolkit 动态加载 UserControl

我搜索了这个站点,发现了 2 个链接
如何在 MVVM 模式中加载 wpf 用户控件

MVVM-Light:将 UserControl 加载到窗口中

但我仍然找不到我的问题的答案和这个链接

MVVM-Light Locator Pattern 和可重用的用户控件

我不明白......所以我在这里陈述我的问题,这可能会帮助像我一样挣扎的其他人......

我有一个MainWindow有 2 个部分,一个有TreeView(a UserControl),另一个显示不同的用户控件(名为 DisplayPanel)......就像 Windows 资源管理器一样。

右侧的显示面板将在树形视图的单击节点上显示不同的用户控件。

而我TreeView本身就是一个用户控件。

我怎样才能使这个复合 UI 使用MVVM. 我也打算使用MVVM轻型工具包。这有什么可以帮助...

一个例子会很棒

谢谢... :)

编辑

我在 TreeView 中创建UserControl了一个依赖属性,UserControl它捕获树视图的选定项,以便我可以使用此依赖属性在“MainView”ContentControl绑定中填充所需的视图....正如您在评论中建议我的那样. 一切都到现在

问题是我想显示所选项目中包含的数据,并且我无法将 UserControls 的 DataContext(将显示在右侧)设置为所选项目,因为这样我将无法使用我的视图模型命令和其他操作的相应用户控件

我也试图解决这个问题....我在 TreeViewUserControl 视图模型中使用了调解器(信使)向用户控件(我需要显示的那个)视图模型发送消息。每当在树视图中选择项目时都会传递消息。并且消息包含选定的节点。我忘了提到我将 UserControl 的数据上下文设置为其视图模型,以便我可以显示数据

但是使用这种方法的问题是,当我第一次单击一种类型的节点时,数据不会被填充,但是如果再次单击相同类型的节点,它会被填充。发生的情况是,UserControl当第一次单击树项并且 Mediator 发送消息时,s 对象可用。所以 Mediator 无法将消息传递给 userControl 视图模型.....

我完全没有想法进一步解决这个问题......如果显示用户控制权是我的方式,或者我应该做其他事情......完全困惑......

0 投票
2 回答
2347 浏览

c# - 扩展 WinForm UserControl 基类的正确体系结构?

我有大量非常相似的用户控件。他们有很多共同的行为。我一直在使用具有通用内容的基类,然后根据需要专门化该类。

ETC ...

在我需要开始插入或更改 BaseControl 中包含的子控件的布局之前,这工作得很好。例如,RedControl 需要将 Button 添加到基本控件的特定面板。在其他情况下,我需要更改其他基本子控件的大小或布局。

当我尝试以下代码时,我在运行时没有看到任何按钮...

如果我将 addButtonToBase() 设为虚拟并手动将其添加到 BaseControl 的 InitalizeComponent() 中生成的代码中,我可以将按钮显示为 baseSplitContainer 的子项。BaseControl 的布局仍在进行中,您可以在 C#.Net 的构造函数中调用虚函数......

因此,即使它有效,它也不是一个好的解决方案。一方面,当我在 VS 设计器中编辑 BaseControl 时,IntializeComponent 中对 addBaseControl() 的调用被删除,另一方面,在构造函数中调用虚函数感觉很危险。

我想我需要让基本控件的布局在派生控件中再次发生......我试过了,但要么做错了,要么它不起作用......

顺便说一句,是的,我知道 WPF 擅长这一点。由于其他系统的限制,无法使用它。

0 投票
3 回答
909 浏览

javascript - 未在 ascx 控件中评估的动态添加的 javascript

我有一个 ascx 控件,它在设计时放置了一个文字。在运行时,在 Page_Load 中,我将文字的 text 属性设置为我从数据库中检索的 javascript。但是,似乎没有评估 javascript 代码。为了评估脚本,我需要做什么?

在 .ascx 中:

在 ascx.cs 中:

0 投票
1 回答
1446 浏览

visual-studio - UpdatePanel 中的自定义用户控件内容在按钮单击回发时消失

我有以下功能,通过在 default.aspx 中的占位符中添加/加载 ascx 自定义用户控件来更新 UpdatePanel 内容:

母版页更新面板:

我从另一个自定义 ascx 控件的导航控件中调用 NavigationTab_Click,当我单击按钮时,我的 ctrl Control 对象在每个控件上动态加载,它具有按钮和标签,它只是将一些文本重新分配给标签。

我的母版页上有以下代码,只是为了获取 ascx 控制路径:

到目前为止一切正常,通过调用 NavigationTab_Click 函数加载我的 ctrl 对象后,我在占位符中看到了我的 ctrl,并且有按钮和标签,但问题是,如果我单击此按钮,它应该将标签重新分配给一些文本,而不是整个 ctrl 控件内容消失,请帮忙。

0 投票
4 回答
2232 浏览

asp.net - 如何按需加载两个 ASP.NET 用户控件?

我想按需加载两个用户控件。

aspx.cs

我通过单击第一个按钮加载第一个用户控件-这可以正常工作,但是当我单击另一个按钮以加载第二个 UserControl 时,第一个 UserControl 消失并且第二个 UserControl 加载。

感谢 IFA_User

0 投票
1 回答
2378 浏览

c# - 动态插入的另一个用户控件中的用户控件

我有一个构建页面的引擎(必须)称为engine.aspx. 我只是指向一个用户控件并engine.aspx为我构建我需要的一切。但这一次,我必须在主用户控件中放置另一个 userControl。如果我在普通 aspx 中打开控件,一切正常!但是如果我尝试用引擎打开,第二个控件的事件不起作用。有谁知道为什么?


我以这种方式添加第一个控件:

第二个控件已经在第一个控件中。

0 投票
1 回答
2561 浏览

c# - 在设计时向我的“即时”用户控件添加控件..?

我有一个 C# WinForms 'ListboxPanelControl' UserControl,它由一个 SplitContainer 组成,它在左侧的 'Panel1' 中托管一个用户绘制的 Listbox 控件。SplitContainer 的右侧“Panel2”将承载在项目添加到列表框中时添加的面板。因此,如果设计时用户将第一项添加到 Listbox,则关联的 Panel 将添加到 SplitContainer 的“Panel2”。如果将第二个项目添加到列表框,则会将第二个面板添加到 SplitContainer 的“Panel2”。然后,当用户选择 Listbox 项目时,相关的 Panel 会显示在右侧。

问题出现在设计时,当用户将控件(例如按钮)从工具箱拖放到当前活动的右侧面板(与当前选定的列表框项对应的面板)上时。我以编程方式将其添加到适当的 Panel 的 Controls 集合中,但这会导致Microsoft Visual Studio IDE中出现“'child' is not a child control of this parent”错误。

我研究了这个问题并发现了一些有用的文章,显示“如何允许一个控件,它是另一个控件的子控件,在设计时接受将控件放到它上面”,例如: http: //www.codeproject.com/文章/37830/设计嵌套控件

这将“DesignerSerializationVisibility”属性与 ControlDesigner 的“EnableDesignMode”方法结合使用,以允许 VS IDE 处理将控件拖放到另一个控件上。问题在于,在这种情况下,UserControl 的目标宿主 Control 是有效固定的并且预先知道。使用我的控件,可以在设计时将其他控件拖放到其上的目标托管面板是预先未知的,因为我的 UserControl 本身可以“即时”构建(当用户添加更多列表框项目时在更多潜在的托管小组中)。

我尝试过以更灵活的方式使用“DesignerSerializationVisibility”和“EnableDesignMode”方法,但似乎仍然遇到上述“子不是此父级的子控件”错误。

我希望这一切都有意义!?代码目前看起来像这样:

这是在 ListboxPanelControl 类中:...

然后,在 ListBoxPanelControl 的“OnControlAdded”事件中,我为当前活动的面板调用“EnableDesignMode”(通过简单的“SetDesignMode”包装),然后添加控件:

我希望我已经足够清楚地解释了这个问题!基本上,有没有人设法将控件添加到他们的 WinForms UserControl,其中目标托管控件本身就是一个子控件,并且当他们的 UserControl 本身是动态的并且是动态构建的?

感谢您的帮助/见解!托尼。