コード例 #1
0
        private GridDefault BuildGridFromArrayDataSource(ArrayDataSource ads)
        {
            var result = new GridDefault();

            OnRowHeadBinding(new RowHeadBindingEventArgs(result));

            for (var i = 0; i < ads.Items.Length; i++)
            {
                OnRowDataBinding(new RowDataBindingEventArgs(i, ads.Items.GetValue(i), result));
            }

            return(result);
        }
コード例 #2
0
        public GridDefault BuildGridFromDataSource()
        {
            var result     = new GridDefault();
            var dataSource = GridDataSource.GetDataSource();

            if (dataSource is SqlDataSource)
            {
                result = BuildGridFromSqlDataSource(dataSource as SqlDataSource);
            }
            else if (dataSource is ArrayDataSource)
            {
                result = BuildGridFromArrayDataSource(dataSource as ArrayDataSource);
            }

            return(result);
        }
コード例 #3
0
        private GridDefault BuildGridFromSqlDataSource(SqlDataSource sds)
        {
            var result = new GridDefault();

            OnRowHeadBinding(new RowHeadBindingEventArgs(result));

            DataView dataView = null;

            if (!PagingDisabled)
            {
                if (GridDataSource.SqlDataSourceSelectCommandType == SqlDataSourceCommandType.StoredProcedure)
                {
                    var nvc = new NameValueCollection(Request.QueryString);

                    nvc.Remove("page");

                    var dataKey = Request.Url.AbsolutePath;

                    if (nvc.Count > 0)
                    {
                        dataKey += "?" + nvc.NameValueToQueryString(false);
                    }

                    dataView = Cache[dataKey] as DataView;

                    if (dataView == null)
                    {
                        dataView = sds.Select(DataSourceSelectArguments.Empty) as DataView;

                        if (dataView == null)
                        {
                            dataView = new DataView(new DataTable());
                        }

                        var expires = DateTime.Now;

                        expires = expires.Add(new TimeSpan(0, 1, 0));
                        Cache.Add(dataKey, dataView, null, expires, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null);
                    }

                    var rowsCount = dataView.Table.AsEnumerable().Skip(GridDataSource.SqlDataSourceStartRowIndex).Take(GridDataSource.SqlDataSourceMaximumRows).Count();

                    for (var i = 0; i < rowsCount; i++)
                    {
                        OnRowDataBinding(new RowDataBindingEventArgs(i, dataView.Table.Rows[GridDataSource.SqlDataSourceStartRowIndex + i], result));
                    }

                    result.Body.TotalRecords = dataView.Table.Rows.Count;
                }
            }

            if (dataView == null)
            {
                dataView = sds.Select(DataSourceSelectArguments.Empty) as DataView;

                for (var i = 0; i < dataView.Table.Rows.Count; i++)
                {
                    OnRowDataBinding(new RowDataBindingEventArgs(i, dataView.Table.Rows[i], result));
                }

                result.Body.TotalRecords = dataView.Table.Rows.Count > 0 && dataView.Table.Columns.Contains("TotalRecords") ? (Int32)dataView.Table.Rows[0]["TotalRecords"] : 0;

                if (result.Body.TotalRecords == 0 && PagingDisabled)
                {
                    result.Body.TotalRecords = dataView.Table.Rows.Count;
                }
            }

            return(result);
        }
コード例 #4
0
 public RowHeadBindingEventArgs(GridDefault grid)
 {
     Grid = grid;
 }
コード例 #5
0
 public RowDataBindingEventArgs(Int32 bodyRowIndex, DataRow dataRow, GridDefault grid)
 {
     BodyRowIndex = bodyRowIndex;
     DataRow      = dataRow;
     Grid         = grid;
 }
コード例 #6
0
 public RowDataBindingEventArgs(Int32 bodyRowIndex, Object data, GridDefault grid)
 {
     BodyRowIndex = bodyRowIndex;
     Data         = data;
     Grid         = grid;
 }