【问题标题】:How to make a DropDownList control display some items in bold ASP.NET如何使 DropDownList 控件以粗体显示一些项目 ASP.NET
【发布时间】:2010-05-25 09:45:45
【问题描述】:

我正在使用 ASP.Net 中的自定义 DropDownList 控件,并且有一个请求以 bold 字体显示列表中的某些项目(注意 - 该控件继承自 CompositeDataBoundControl,因此它可以是数据绑定...不是 DropDownListBox)。该控件绑定到一个表,并且表中有一个名为 IsUsed 的列 - 如果将其设置为 true,则列表中的相应项目应呈现为粗体。 (这里应该注意的是,这只会在 FireFox 中查看。)

我的经验都在中间\后端层,所以表示层对我来说很新——有人能指出我正确的方向吗?我最初的想法是,在自定义控件的某个地方,我可以访问从数据源返回的所有行,我可以循环访问这些行,但我不确定这是否可能......还有 RenderContents 我可以覆盖...看起来很有趣!

【问题讨论】:

    标签: c# .net asp.net drop-down-menu


    【解决方案1】:

    这是如何在代码隐藏中执行您需要的操作:

    var item = new ListItem("MyItem");
    item.Attributes.Add("style", "font-weight: bold");
    
    var list = FindControl("DropDownList1");
    list.Items.Add(item);
    

    System.Web.UI.Control 继承的任何控件都具有属性Attributes,您可以使用该属性添加或附加style 属性。

    【讨论】:

    • 好的,所以回到我的控件的 RenderContents 方法......这肯定会为列表中的每个项目输出 HTML 吗?因此,根据您所说的,我应该能够将样式应用于每个单独的项目?
    • 任何服务器端控件在渲染后都会变成 HTML。因此,您可以对其应用任何适当的 HTML 方法/工具/方法
    【解决方案2】:

    无论您在服务器端使用什么控件,它都会在客户端浏览器中呈现为 html,并且标准的 html 下拉列表不支持对其内容进行样式设置。您可以使用 JavaScript 或 jQuery 自定义下拉列表控件,而不是这样做。

    【讨论】:

    • 所以无论我能否获取数据,目前都不管,因为即使我对内容应用某种样式,它也没有效果?
    • abatishchev 的解决方案适用于如果您想使用粗体字制作特定条目。但是如果你想改变部分文本,那么使用服务器端控制是无法做到的。
    • 我认为这取决于文本如何呈现 - 它在原始 HTML 中的外观如何。如果您可以将 HTML 标记用作控件的内部文本,那么您可能应该能够将特定文本设为粗体。 IE。它看起来像这样:<span>My <b>particular</b> text</span>
    • 标准 html 下拉列表支持颜色样式,这将起作用:
    【解决方案3】:

    好的,我想我已经回答了我自己的问题,但它似乎不是很优雅。

    我可以编写一个新的存储过程来返回我需要在列表中显示的数据,该列表将返回 ID 和DESCRIPTION。但是,描述将是描述加上 TRUE 或 FALSE(取决于表中的标志 IsUsed)。然后在 RenderContents 中,我可以拆分描述字符串,解析 bool 并添加一个样式属性,如果 bool 为真,则使文本变为粗体......

    【讨论】:

    • 我将我们的描述和 IsUsed 字段分开,然后您不需要在 RenderContents 中拆分字符串。 您不希望数据层担心演示。有什么理由不能返回第三个字段?
    • 这是自定义控件中的代码拆分字符串,但我明白你的意思。我只是对数据绑定知之甚少 - 所以我的 SP 返回多少字段并不重要,因为我可以在下拉列表代码中选择如何处理它们对吗?明天我在办公室的时候试试这个,肯定比分隔的字符串更优雅!
    • 看起来我不能这样做......在 RenderContents 中,我似乎只能访问 ddl 的 Items 属性 - 这些项目只有从存储过程返回的描述和 id,我刚刚添加的第三个字段被忽略...
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多