问题标签 [composite-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 投票
1 回答
796 浏览

asp.net - 在 ASP.Net 中的 CompositeControl 上创建“样式”属性

我在创建新的 CompositeControl 时遇到问题。

目前我有一个从 TextBox 继承的自定义控件,该控件没有定义 Style 属性,但我可以在页面标记中设置属性,并且将正确应用样式。

我正在尝试创建与自定义控件具有相同功能的 CompositeControl,一切正常,直到我尝试在控件上设置 Style 属性,在编译时抛出此错误:“无法以声明方式设置'Style'属性",即使我在 CompositeControl 的代码中声明了 'Style' 属性(即使我使用了 'new' 关键字),这种情况也会继续发生。

我不明白为什么我在其中一个控件中而不是在另一个控件中出现错误。

任何建议将被认真考虑。

谢谢

0 投票
1 回答
1716 浏览

asp.net - 创建 ASP.NET 复合控件。如何应用与 SkinID 关联的属性?

我正在创建一个基于 asp:Label 控件的自定义复合控件。我希望能够让标签的默认属性以及我添加到我的控件的其他属性是可换肤的。

但是,当我将皮肤定义添加到我的主题目录中的 Default.skin 文件,并将控件添加到指定 SkinId 的页面时,我无法弄清楚如何让控件使用 Skinned 属性呈现。

附加点:

  • 我的自定义控件在单独的库/dll 中定义。
  • 我添加了一个测试属性,并添加了 [Themeable(false)] 属性。然后我在 .skin 文件中设置该属性。当我尝试查看页面时没有收到任何错误,因此在我看来 .skin 文件没有被应用,或者皮肤文件中的控件定义与.aspx 页面。

从皮肤文件:

从 aspx 页面:

从 web.config:

我向控件添加了一个测试属性,将其标记为 [Themeable(false)] 以测试在皮肤文件中设置该属性时是否会出现运行时错误。没有错误。

注意 pages 标签没有 styleSheetTheme 属性。但是,我确实有一个覆盖 StyleSheetTheme 属性的基本页面类,这似乎适用于其他所有内容。

如果我将 styleSheetTheme 属性添加到 web.config 中的 pages 标记,皮肤的东西就会起作用,包括如果我尝试设置非主题属性时会出现错误。

有什么不同?如何让它与基本页面类属性代码一起使用?

0 投票
2 回答
4433 浏览

c# - WebControl 和 CompositeControl 之间的区别?

我一直在网上寻找一些关于该主题的文章,但我仍然无法弄清楚它们之间的区别。我有下面显示的代码,如果我从 CompositeControl 继承它可以完美地工作,但如果我从 WebControl 继承则不能。(它们都呈现代码,但只有 CompositeControl 处理事件)

因此,当我单击按钮并将控件呈现为 WebControl 时,什么也没有发生。但是,如果我将 WebControl 更改为 CompositeControl,则会打印出文本。为什么?WebControl 和 CompositeControl 有什么区别?

0 投票
1 回答
412 浏览

asp.net - 设计时错误的 CompositeControl 和 XML 反序列化

我收到“错误呈现控件”错误,仅当我以设计模式将控件放置在 Web 窗体上时,如果我运行该页面,控件将正确显示。
上面的语句并不重要,发生这个错误是因为返回的工具栏对象为空l。

调试后,问题出在从 CeateChildControls() 调用的函数中:

工具栏返回 null!(在设计模式下)
但是当我运行页面时,工具栏会返回适当的数据。

如果您需要有关我的代码的更多信息,请询问。

更新:

它必须与程序集有关,如果我使用文件流而不是指定文件,它确实有效。

另一个更新:

我稍微修改了我的代码,并添加了“数据集”用于测试目的:

我注意到的另一件事是,当我将控件添加到新的网站项目时,以上所有内容都会发生,但是如果我将控件项目的调试属性设置为启动外部程序(我启动 Visual Studio),然后我创建一个新项目并添加控制一切正常。

0 投票
2 回答
5557 浏览

asp.net - 错误渲染控制 - [A] 不能在上下文 LoadNeither 中转换为 [B]

我正在开发一个复合控件,这需要我打开多个 Visual Studio IDE 并在页面上添加控件。

这会导致 Visual Studio 创建多个程序集。

所以每次发生这种情况时,我都会关闭所有 IDE,并删除 ProjectAssemblies 文件夹。

这一切都可以避免吗?这样的工作太难了……

更新:

具体错误是:

发生了未处理的异常。[A]VerySimpleEditor.Toolbars 不能转换为 [B]VerySimpleEditor.ToolBars。类型 A 源自位置 C:\Documents and Settings\Mark\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ 上下文“LoadNeither”中的“VerySimpleEditor, Version=1.0.0.0, Culture=neutral,PublicToken=null” ProjectAssemlies\j-wxrc_j01\verysimpleeditor.dll。类型 B 源自位置 C:\Documents and Settings\Mark\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ 上下文 'LoadNeither' 中的 'VerySimpleEditor, Version=1.0.0.0, Culture=neutral, PublicToken=null' ProjectAssemlies\bkqrbe-r01\VerySimpleEditor.dll。

当我尝试像这样投射时:

控件项目(dll)和网站项目在一个解决方案中,我将控件从工具箱拖到网页,重新编译控件后。
每当我重新编译控件并将其添加到页面时,都会发生此错误,当我重新启动 Visual Studio 并添加控件时,它就可以工作。

0 投票
1 回答
564 浏览

asp.net - 如何在回发时更改复合服务器控件中的子控件

我有一个 ASP.NET Web 表单复合控件,我们称它为控件 A,其中包含一个子复合控件,我将其称为控件 B。控件 B 的子控件依赖于控件 A 的属性。

在初始加载时,我在控件 A 的 OnLoad 中设置此参数,并且控件 B 在 CreateChildControls 中正确设置其子控件时一切正常。

但是,当我想通过控件 A 的下拉列表中的 SelectedIndexChanged 更改此参数时,事件处理程序似乎在生命周期中处理得太晚,控件 B 无法获取更改的值。想必这是因为控件 B 的 CreateChildControls 方法已经被调用了。

如何让控件 B 以这样的方式更新其子控件,以便它们可以通过正常的生命周期,根据需要加载视图状态?

只是为了清楚起见,当控件 A 的参数发生更改时,控件 B 的子控件可能必须保留一些,一些需要删除,一些需要添加,因此对于保留的那些,它们仍然需要负载状态。

0 投票
1 回答
4045 浏览

wpf - 复合控件中的 WPF TabIndex

我有一个简单的窗口,其中嵌入了一个简单的复合控件。

(主窗口)

(复合控制)

正如我的表单所预期的那样,我得到了 4 个文本框......

  • 第一的
  • 第二
  • 第三
  • 第四

但是当“第一”有焦点并且我点击标签时,焦点会切换到“第三”。WPF 似乎将选项卡列表视为单个平面列表,而不是 MyControl 为 TabIndex 3 且文本框“Third”是其中的第一个选项卡式控件的树。

这是 WPF 中的错误还是有另一种方法?复合控件用于许多窗口,甚至可以在单个窗口上多次使用。

0 投票
1 回答
1260 浏览

asp.net - ASP CompositeControl & ScriptManager

我对WebControl / CompositeControl世界真的很陌生,而且我正在玩一个小型测试类。它只是一个在单击时更新的LinkBut​​ton当我将它排除在UpdatePanel之外时,一切都很好 。但是当我尝试在里面运行它时,我仍然得到一个完整的页面 POST 响应。如何使此类在UpdatePanel中工作?

这是课程:

中的代码OnInit()导致控件正确发布,但我没有得到LinkBut​​ton的更新文本。它仍在触发事件 - 当我调试时,我可以看到它被调用。设置此控件以在UpdatePanel中使用的正确方法是什么?

用法,以防万一:

0 投票
1 回答
2726 浏览

asp.net - 复合控件中的 DropDownList 在回发时丢失所选值

我正在构建一个复合服务器控件,该控件当前只有一个 TextBox 和一个 DropDownList。这是所有胎儿荣耀的代码:

该控件似乎在回发中正常工作,直到设置了声明性值,例如:

在此之后,文本框继续正常工作,但 _state 成员不会拾取回发的值,而只是坚持声明的值。我检查了 Request 对象中的原始发布值,并且列表的 UniqueID 的新值在那里,但 _state 没有选择它。

我很确定这将是显而易见的,但我只是在这里旋转我的轮子。

0 投票
1 回答
1237 浏览

c# - 我的 ASP.NET 复合控件的文本属性未设置文本更改

我已经构建了一个复合控件,它呈现一个 TextControl 或一个 RADEditor 控件,它依赖于一组属性。两个呈现的控件都有一个 Text-property。问题是,当我更改网页上的 Textvalue 时(当它运行时),它不会设置新的 Text-value,而是设置旧的 Textvalue。

有没有人知道我做错了什么?

在我的复合控件的代码下方。

提前致谢

亲切的问候,帕特里克