Подкласс DropdownList и получить значение открытого атрибута - PullRequest
1 голос
/ 28 января 2012

У меня есть пользовательский элемент управления DropDownList:

<cc1:CountriesControl ID="DdlCountry" TabIndex="69" runat="server" DefaultCountry="USA" OnSelectedIndexChanged="DdlCountryIndexChanged"
                                CssClass="DefaultDropdown" AutoPostBack="true" />

В DropDownList есть пользовательское свойство DefaultCountry.Как видите, по умолчанию установлено значение «США».Однако в моем подклассе 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
}

Ответы [ 2 ]

0 голосов
/ 29 января 2012

Решением было не связывать данные в конструкторе, а вызывать их из кода на моей странице. Похоже, что значение атрибутов (например, @DefaultCountry) не устанавливается до тех пор, пока для элемента управления не будет вызван метод RenderControl.

0 голосов
/ 28 января 2012

вам нужно использовать Selected property для истины для элемента, который вы хотите установить по умолчанию.посмотрите здесь примеры 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
...