在数据绑定之前初始化usercontrol属性的位置?

时间:2011-01-10 19:33:12

标签: c# asp.net events user-controls

如何使用一些默认属性值编写C#代码(aspx)来初始化用户控件?我的意思是哪个/哪个事件?我有一个带有gridview的用户控件,我在容器页面上绑定。在容器页面的页面加载中,我绑定数据。我尝试在initproperties中编写初始化代码,但它不起作用。请建议我在哪里可以设置usercontrol的默认值?

编辑: 正如DOK所建议的那样..我已经有了一个属性,我改变了其中一个DIV的宽度。这是无效的代码。

public int CollapsiblePanelWidth
    {
        set
        {
            if (DataDiv.Attributes["style"] != null)
            {
                if (DataDiv.Attributes["style"].Contains("width:"))
                {
                    string[] array = DataDiv.Attributes["style"].Split(new char[] { ';' });
                    array = Array.FindAll(array, ContainsWidthAttribute);
                    string result = "";
                    foreach (string s in array)
                    {
                        result += s + "; ";
                    }                   
                    DataDiv.Attributes["style"] = result + " width: " + Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH) + "px;";
                }
                else
                {
                    DataDiv.Attributes["style"] += " width: " + Convert.ToString(value != null? value:COLLAPSIBLEPANELWIDTH) + "px;";
                }
            }
            else
            {
                DataDiv.Attributes.Add("style", "width: " + Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH) + "px;");
            }
            GridView1.Width = Unit.Parse(Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH - 2));
        }
    }

仅当我在调用程序上设置宽度时才有效。否则,不会添加默认值style="width: 105px;"

2 个答案:

答案 0 :(得分:2)

基本上你想要的是虚拟属性CollapsiblePanelWidth,它只处理宽度或返回默认值(如果尚未设置)。

然后在UserControl的override void OnPreRender(EventArgs)方法中执行样式设置代码。

编辑:这样的事情就足够了

public MyUserControl()
{
    CollapsiblePanelWidth = 105;
}

public int CollapsiblePanelWidth { get; set; }

protected override void OnPreRender(EventArgs e)
{
    DataDiv.Style[HtmlTextWriterStyle.Width] = CollapsiblePanelWidth.ToString();
    GridView1.Width = CollapsiblePanelWidth - 2;

    base.OnPreRender(e);
}

答案 1 :(得分:0)

如何创建UserControl的属性并为其提供默认值?初始化UserControl时将设置这些属性,您可以在代码中更改它们。

您可以将属性的访问权限指定为public或private或protected。然后,您可以从父级更改公共属性。

也许您可以将代码更改为真正简单的代码,直到您将现有属性工作为止。删除代码是问题的可能性,而不是属性本身。让财产工作,然后让它做一些复杂的事情。