如何使用一些默认属性值编写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;"
。
答案 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。然后,您可以从父级更改公共属性。
也许您可以将代码更改为真正简单的代码,直到您将现有属性工作为止。删除代码是问题的可能性,而不是属性本身。让财产工作,然后让它做一些复杂的事情。