我有一个自定义的DropDownList控件:
<cc1:CountriesControl ID="DdlCountry" TabIndex="69" runat="server" DefaultCountry="USA" OnSelectedIndexChanged="DdlCountryIndexChanged"
CssClass="DefaultDropdown" AutoPostBack="true" />
DropDownList有一个名为DefaultCountry的自定义属性。如您所见,默认值设置为“USA”。但是在我的子类中,DefaultCountry始终为null。
如何将DefaultCountry设置为ASP.NET标记中的内容?
[DefaultProperty("Text"), ToolboxData("<{0}:CountriesControl runat=server></{0}:CountriesControl>")]
public class CountriesControl : DropDownList
{
[Bindable(true), Category("Appearance"), DefaultValue("")]
private String defaultCountry;
[
Category("Behavior"),
DefaultValue(""),
Description("Sets the default country"),
NotifyParentProperty(true)
]
public String DefaultCountry
{
get
{
return defaultCountry;
}
set
{
defaultCountry = value;
}
}
public CountriesControl()
{
this.DataSource = CountriesDataSource();
this.DataTextField = "CountryName";
this.DataValueField = "Country";
this.SelectedIndex = 0;
this.DataBind();
// DefaultCountry is always null?
this.Items.Insert(0, new ListItem(this.DefaultCountry, "--"));
}
// more code here
}
答案 0 :(得分:0)
您需要对要将其设置为默认值的项目使用Selected property
为true。在这里查看示例Dropdownlist
// this is the normal syntax. to get the default value for dropdownlist
<asp:DropDownList ID="DropDownList1" runat="server" width="145px">
<asp:ListItem Text="SomeText" Value="SomeValue" Selected="true"></asp:ListItem>
</asp:DropDownList>
但在你的情况下。你可能会尝试这样,我不确定,但猜测。
this.Selected=true
答案 1 :(得分:0)
解决方案是不绑定构造函数中的数据,而是从我页面后面的代码中调用它。在控件上调用RenderControl方法之前,似乎不会设置属性的值(例如@DefaultCountry)。