2

SelectedValue = ""当我点击我的按钮时,我得到了。

我的 aspx :

<telerik:RadComboBox ID="ddl_contactList" runat="server" AutoPostBack="True" CausesValidation="False"
            CollapseDelay="0" Culture="ar-EG" ExpandDelay="0" Filter="StartsWith" ItemsPerRequest="10"
            MarkFirstMatch="true" Skin="Outlook" EnableAutomaticLoadOnDemand="True" EmptyMessage="-New Menu-"
            ShowMoreResultsBox="True" OnSelectedIndexChanged="ddl_contactList_SelectedIndexChanged"
            EnableItemCaching="false" EnableLoadOnDemand="True" EnableVirtualScrolling="True">
        </telerik:RadComboBox>

我的 .cs :

 private void BindContactLists(int year, int main_code)
        {
            ddl_contactList.Items.Clear();
            DataTable dt = ContactList.GetContactListsByDep(year, main_code);
            ddl_contactList.DataSource = dt;
            ddl_contactList.DataTextField = "list_desc";
            ddl_contactList.DataValueField = "list_code";
            ddl_contactList.DataBind();

        }

我在 中调用它是page load因为当我在 中调用它时 !Page.Ispostback,出现以下错误:

没有分配的数据源。无法完成回调请求。

我该如何解决这个问题?马上:

ddl_contactList.Text == "MySelectedItemText"

selectedValue == ""selectedItem == ""

4

3 回答 3

8

将您的调用BindContactLists()Page_Load()方法移到Page_Init()方法。这允许在页面生命周期的后期为 ViewState 绑定设置控件,并允许正确填充 SelectedValue 属性。

于 2012-10-15T19:20:40.287 回答
3

这很正常,因为您重新绑定了数据 => 所以您删除了您选择的值

我建议您在!IsPostBack=> 中设置您的块,当您发布时不要擦除

在页面加载中

if(! IsPostBack)
{

           ddl_contactList.Items.Clear();
            DataTable dt = ContactList.GetContactListsByDep(year, main_code);
            ddl_contactList.DataSource = dt;
            ddl_contactList.DataTextField = "list_desc";
            ddl_contactList.DataValueField = "list_code";
            ddl_contactList.DataBind();


}

你坚持你的控制与ViewState

EnableViewState="true"

于 2012-09-26T17:56:09.823 回答
1

确保在页面加载或初始化触发时填充您的数据源(如数据集或数据表)

于 2012-10-21T10:50:33.717 回答