我全局了一个dataView,然后给这个dataView添入数据,再将那个ListView的DataSource设置成这个dataView,然后数据绑定。这个ListView能正常显示了,但是一旦要进行选择或者排序的时候,就会出现类似 ListView“ExperimentalReportsList”引发了未处理的事件 SelectedIndexChanging。 的错误。这个是怎么回事?部分代码如下:
        dataView = (DataView)ExperimentalReports.Select(DataSourceSelectArguments.Empty);
        if (dataView != null)
        {
            dataView.Table.Columns.Add("StudentId", System.Type.GetType("System.String"));
            dataView.Table.Columns.Add("LastName", System.Type.GetType("System.String"));
            dataView.Table.Columns.Add("FirstName", System.Type.GetType("System.String"));
            dataView.Table.Columns.Add("Name", System.Type.GetType("System.String"));            foreach (DataRow dataRow in dataView.Table.Rows)
            {
                ProfileCommon profile = Profile.GetProfile(Membership.GetUser(dataRow.Field<Guid>("UserId"), false).UserName);
                dataRow.SetField<String>("StudentId", profile.ID);
                dataRow.SetField<String>("LastName", profile.LastName);
                dataRow.SetField<String>("FirstName", profile.FirstName);
                dataRow.SetField<String>("Name", profile.LastName + " " + profile.FirstName);
            }            ExperimentalReportsList.DataSource = dataView;
            ExperimentalReportsList.DataBind();
        }
谢谢大家!

解决方案 »

  1.   

    把全局的dataView 改成DataTable呢
      

  2.   

    OnSelectedIndexChanging 引发 SelectedIndexChanging 事件。 
      

  3.   

    是不是:主动添加一个OnSelectedIndexChanging事件,但是该事件中的代码为空。
      

  4.   

    我试过这样,选择以后就什么也不发生。写成以下就可以正常了:
            ExperimentalReportsList.SelectedIndex = e.NewSelectedIndex;
            ExperimentalReportsList.DataBind();
    但是排序就麻烦了,总是升序,也不知道怎么发降序的命令,用代码的话肯定能解决,但是想不通为什么用datasource控件绑定就可以,用代码就不行。
      

  5.   

    为什么使用DataSource控件就没有问题?
      

  6.   

    不行,会引发错误:无法将类型为“System.Data.DataView”的对象强制转换为类型“System.Data.DataTable”。