C# 复合控件-如何从postbackdatacollection获取数据

C# 复合控件-如何从postbackdatacollection获取数据,c#,asp.net,custom-controls,C#,Asp.net,Custom Controls,我知道复合控件自动处理回发数据。 但我有一个要求,我将下拉列表放置在复合控件中,并将其绑定到每个回发上 每次回发后,我都会看到下拉列表保留其选定值 问题是,在回发过程中,当我尝试获取所选值时,它是空的 我认为这是因为我试图过早地获取所选值。(在执行dropdown.databind()之后) 谁能告诉我,如何从回发数据收集中获取所选值?或 在什么情况下,我将在复合控件中获得正确的选定值 这里是我的ovverriden数据绑定方法: public override void DataBind()

我知道复合控件自动处理回发数据。 但我有一个要求,我将下拉列表放置在复合控件中,并将其绑定到每个回发上

每次回发后,我都会看到下拉列表保留其选定值

问题是,在回发过程中,当我尝试获取所选值时,它是空的

我认为这是因为我试图过早地获取所选值。(在执行dropdown.databind()之后)

谁能告诉我,如何从回发数据收集中获取所选值?或 在什么情况下,我将在复合控件中获得正确的选定值

这里是我的ovverriden数据绑定方法:

public override void DataBind()
{
    base.DataBind();

    addressDataSet = new AddressDataSet();
    countryAdapter = new CountriesForAddressTableAdapter();
    countryAdapter.Fill(addressDataSet.CountriesForAddress);

    maindropdown.DataSource = addressDataSet.CountriesForAddress;
    maindropdown.DataTextField = "Name";
    maindropdown.DataValueField = "CountryId";
    maindropdown.DataBind();



    if (!maindropdown.Value.IsNullOrEmpty()) <- THIS Value ALWAYS COMES AS NULL
    {
        fieldAdapter = new CountrySpecificFieldsTableAdapter();
        fieldAdapter.Fill(addressDataSet.CountrySpecificFields, int.Parse(maindropdown.Value));
    }
}
public覆盖无效数据绑定()
{
base.DataBind();
addressDataSet=新的addressDataSet();
countryAdapter=新CountriesForAddressTableAdapter();
countryAdapter.Fill(addressDataSet.CountriesForAddress);
maindropdown.DataSource=addressDataSet.CountriesForAddress;
maindropdown.DataTextField=“Name”;
maindropdown.DataValueField=“CountryId”;
maindropdown.DataBind();

根据我的经验,如果(!main dropdown.Value.IsNullOrEmpty()),则只有在
CreateChildControls()中重新创建成分控件后,您才能访问它们。
我正在确保通过执行ensureChildControls()创建成分控件;值为null。不是下拉列表您是否确保在(!IsPostback)中绑定下拉列表
?不,它在控件的onInit事件中每次都绑定。但它保留了dropdown的值。我确信在某些事件框架中,会将回发数据中的值分配给dropdown。我只是不知道该事件是什么