0

我有一个用于显示员工列表的“列表视图”和一个用于选择部门的“下拉列表”。当我第三次或第二次使用“DropDownlist”时出现以下错误:

“无法加载视图状态”。

正在加载视图状态的控制树必须与在先前请求期间用于保存“视图状态”的控制树匹配。例如,当动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。”

这是 asp.net Webform,我必须使用这项技术,别无选择。

namespace .Presentation.general
{

public partial class Listg : PageBase
{


    void Page_PreInit(Object sender, EventArgs e)
    {
        this.MasterPageFile = "~/App_MasterPages/empty.Master";
    }
    protected void Page_Init(object sender, EventArgs e)
    {


    }
    protected void Page_Load(object sender, EventArgs e)
    {


        if (!IsPostBack)
        {
            PopulateDepartmentsDropDownList();

            GeneralObjectDataSource.SelectParameters["Department"].DefaultValue = "";

            decimal presence = Convert.ToDecimal(Data.EmployeeDB.Create().GetCountEMPOnlineToday());

            decimal visibles = Convert.ToDecimal(Data.EmployeeDB.Create().GetCountVisiblesEmployees());
            visibles = (visibles == 0 ? 1 : visibles);
            PresenceLabel.Text = System.Math.Round((presence / visibles) * 100, 1).ToString() + "% " + string.Format(" ({0})", presence);



        }

    }

     public void Search(object sender, EventArgs e)
    {

        GeneralObjectDataSource.SelectParameters["name"].DefaultValue = Common.Converter.ConvertToFarsiYK(NameTextBox.Text.Trim());



        if (PresenceRadioBottonList.SelectedValue == "1")
        {
            GeneralObjectDataSource.SelectParameters["onlyPresence"].DefaultValue = "true";
        }
        else
        {
            GeneralObjectDataSource.SelectParameters["onlyPresence"].DefaultValue = "false";
        }

        DataListView.DataBind();
    }

    public void select_department_SelectedIndexChanged(object sender, EventArgs e)
    {

        GeneralObjectDataSource.SelectParameters["name"].DefaultValue = "";
        GeneralObjectDataSource.SelectParameters["Department"].DefaultValue = select_department.SelectedItem.Text;
        GeneralObjectDataSource.DataBind();


        DataListView.DataBind();


    }



    private void PopulateDepartmentsDropDownList()
    {
        select_department.DataSource = Biz.EmployeeBO.GetDepartments();
        select_department.DataTextField = "Name";
        select_department.DataValueField = "ID";
        select_department.DataBind();

        select_department.Items.Insert(0, new ListItem("", "0"));
        select_department.SelectedValue = Biz.Settings.SelectedDepartmentID;
    }
}
}
4

0 回答 0