【问题标题】:Extending ASP.NET DropDownList扩展 ASP.NET DropDownList
【发布时间】:2009-05-17 15:59:44
【问题描述】:

我正在尝试创建一个继承自 DropDownList 的自定义控件。

我需要向 ListItem(在 Item 集合中)添加一个新属性。

<cc1:MyDropDownList ID="MyDropDownList1" runat="server">   
   <asp:ListItem myProperty="true" text="sometext" ... />                     

</cc1: MyDropDownList>    

我该怎么做?

【问题讨论】:

  • 您能解释一下为什么需要创建自定义 control3 版本吗?
  • 是的,我在对 David Robbins 的评论中这样做了。

标签: c# asp.net controls


【解决方案1】:

即使您从 DropDownList 继承,也无法添加此属性,因为您必须将其添加到 ListItem 控件。
但问题是 ListItem 类是密封的,所以你不能从它继承。

【讨论】:

  • 是的,我知道它是密封的……但我能做什么?有什么解决方法吗?
【解决方案2】:

您可以使用 jQuery 扩展客户端的功能吗?

【讨论】:

  • 好吧,我对 JQuery 不熟悉 :(
  • 我需要这个属性来“指示”RenderContents 以特定方式呈现特定项目。当然我可以通过在 Text 属性中传递这个标志来做到这一点,但这并不干净。
  • 在没有看到代码的情况下,我可以提供一个有限的建议,即创建一个结构来保存您的数据 - 值、描述、变量文本 - 并将其传递给客户端。创建一个响应单击、接收值、执行查找、然后对要传递的变量文本/“标志”进行操作的 javascript 函数。如果您需要回帖,请使用“标志”更新隐藏字段并在服务器上读取。
  • 重新思考我关于隐藏字段的评论的最后一点。像往常一样回发,然后响应服务器上的 SelectedItem。同样,如果你必须回发的话。
  • 我应该解释一下我想要做什么。我想扩展下拉列表并带有禁用项目的选项。通过禁用我的意思是阻止它被选择和单击。我计划通过在我的新控件的重写 RenderContents 中添加 来做到这一点。所以,我希望项目有一个属性“已禁用”,我可以在设计/运行时设置它,然后在 RenderContents 中,将标签添加到正确的项目。
猜你喜欢
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多