【问题标题】:How to cast DataView to DataSource如何将 DataView 转换为 DataSource
【发布时间】:2014-10-08 23:59:18
【问题描述】:

有什么方法可以将 DataView 转换为 DataSource 吗?

我正在尝试在单击时对我的 gridview 列进行排序。代码如下:

internal static string sort(object _sender, GridViewSortEventArgs _e, string _viewStateSortExpression, string _viewStateSortDirection)
        {
            string expression = _e.SortExpression;
            string direction = getSortDirection(expression, _viewStateSortExpression, _viewStateSortDirection); //ascending by default

            GridView gvSrc = (GridView)_sender;

            DataView dv = new DataView();
            gvSrc.DataSource = dv;
            gvSrc.DataBind();



            dv = (DataView)((SqlDataSource)gvSrc.DataSource).Select(DataSourceSelectArguments.Empty);


            dv.Sort = expression + " " + direction;
            return direction;
        }

单击列进行排序时出现此错误:

Unable to cast object of type 'System.Data.DataView' to type 'System.Web.UI.WebControls.SqlDataSource'.

【问题讨论】:

  • 您是否尝试过直接投射而不是先投射到SqlDataSource,然后再投射到DataView?
  • @shree.pat18 我收到此错误:必须在使用 DataView 之前设置 DataTable。

标签: c# asp.net gridview datasource


【解决方案1】:

将 DataView 转换为 DataTable:

有一个名为 ToTable 的方法可以将 DataView 转换为 DataTable

DataTable dt=dv.ToTable();// this method may expects parameters

将 DataTable 转换为 DataView:

DefaultView 是返回 DataTable 的 DataView 的属性

DataView dv=dt.DefaultView

【讨论】:

  • GridView gvSrc = (GridView)_sender;数据视图 dv = new DataView(); gvSrc.DataSource = dv; gvSrc.DataBind();数据表 dt = 新数据表(); dt = dv.ToTable(); dv = dt.DefaultView;这也会引发错误:对象引用未设置为对象的实例。
【解决方案2】:

试试这个,

 DataTable m_DataTable = gvSrc.DataSource as DataTable;

   if (m_DataTable != null)
   {
      DataView m_DataView = new DataView(m_DataTable);
      m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

      gvSrc.DataSource = m_DataView;
      gvSrc.DataBind();
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 2012-12-26
    • 1970-01-01
    • 2012-03-16
    • 2011-03-13
    • 1970-01-01
    • 2018-04-13
    • 2012-10-25
    相关资源
    最近更新 更多