相关问题:Get All Web Controls of a Specific Type on a Page

在上面的问题中,我问我如何获得所有控件,它们的作用就像魔咒,但有些东西不太合适,所以我认为可能是我。我有以下代码,但它没有操纵页面上的控件,但按我的理论,它应该可以工作。

List<DropDownList> allControls = new List<DropDownList>();
ControlEnhancer.GetControlList<DropDownList>(Page.Controls, allControls);

foreach (DropDownList childControl in allControls)
        {
            foreach (ListItem li in childControl.Items)
            {
                li.Attributes.Add("title", li.Text);
            }

            childControl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title");
        }

那就是代码,您可以从相关问题中获取GetControlList()代码,该问题显示了它如何获取所有控件,仅是我的操作。我正在尝试获取所有dropdownlist列表项,并为其添加标题,以便获得工具提示。

这是针对IE8及以下版本的快速修复,该版本可在下拉框中剪切长文本。

最佳答案

Page_Load通常发生得太早; Page_PreRender是实际为浏览器呈现页面HTML之前的最后一刻,在许多情况下,这是在用户控件上设置属性的最佳位置。

这是因为在Web表单(页面)生命周期中,页面(以及页面中包含的用户控件...)中还存在其他事件,这些事件有时会删除/替换/覆盖(实际上)这些属性,因此这是唯一的方法您可以将这些属性添加到浏览器中,即在Page_PreRender.中触发并处理了所有其他生命周期事件之后将其附加

10-02 01:51