protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments) { int pageSize = Int32.MaxValue; if (arguments.MaximumRows > 0) { pageSize = arguments.MaximumRows; } int pageIndex = (arguments.StartRowIndex / pageSize); PageRequest request = null; if (!(String.IsNullOrEmpty(_owner.PageRequestParameterName))) { string r = HttpContext.Current.Request.Params[_owner.PageRequestParameterName]; if (!(String.IsNullOrEmpty(r))) { #pragma warning disable 0618 System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); #pragma warning restore 0618 request = serializer.Deserialize <PageRequest>(r); request.PageIndex = pageIndex; request.PageSize = pageSize; request.View = _owner.DataView; } } if (request == null) { request = new PageRequest(pageIndex, pageSize, arguments.SortExpression, null); List <string> filter = new List <string>(); System.Collections.Specialized.IOrderedDictionary filterValues = FilterParameters.GetValues(HttpContext.Current, _owner); foreach (Parameter p in FilterParameters) { if (filterValues[p.Name] != null) { string query = (p.Name + ":"); foreach (string s in Convert.ToString(filterValues[p.Name]).Split(',', ';')) { string q = Controller.ConvertSampleToQuery(s); if (!(String.IsNullOrEmpty(q))) { query = (query + q); } } filter.Add(query); } } request.Filter = filter.ToArray(); } request.RequiresMetaData = true; request.RequiresRowCount = arguments.RetrieveTotalRowCount; ViewPage page = ControllerFactory.CreateDataController().GetPage(_dataController, _dataView, request); if (arguments.RetrieveTotalRowCount) { arguments.TotalRowCount = page.TotalRowCount; } return(page.ToDataTable().DefaultView); }
protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments) { var pageSize = Int32.MaxValue; if (arguments.MaximumRows > 0) { pageSize = arguments.MaximumRows; } var pageIndex = (arguments.StartRowIndex / pageSize); PageRequest request = null; if (!(string.IsNullOrEmpty(_owner.PageRequestParameterName))) { var r = HttpContext.Current.Request.Params[_owner.PageRequestParameterName]; if (!(string.IsNullOrEmpty(r))) { request = JsonConvert.DeserializeObject <PageRequest>(r); request.PageIndex = pageIndex; request.PageSize = pageSize; request.View = _owner.DataView; } } if (request == null) { request = new PageRequest(pageIndex, pageSize, arguments.SortExpression, null); var filter = new List <string>(); var filterValues = FilterParameters.GetValues(HttpContext.Current, _owner); foreach (Parameter p in FilterParameters) { var v = filterValues[p.Name]; if (v != null) { var query = (p.Name + ":"); if ((p.DbType == DbType.Object) || (p.DbType == DbType.String)) { foreach (var s in Convert.ToString(v).Split(',', ';')) { var q = Controller.ConvertSampleToQuery(s); if (!(string.IsNullOrEmpty(q))) { query = (query + q); } } } else { query = string.Format("{0}={1}", query, v); } filter.Add(query); } } request.Filter = filter.ToArray(); } request.RequiresMetaData = true; request.RequiresRowCount = arguments.RetrieveTotalRowCount; var page = ControllerFactory.CreateDataController().GetPage(_dataController, _dataView, request); if (arguments.RetrieveTotalRowCount) { arguments.TotalRowCount = page.TotalRowCount; } return(page.ToDataTable().DefaultView); }
protected internal override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments) { if (SortParameterName.Length > 0 && SelectCommandType == SqlDataSourceCommandType.Text) { throw new NotSupportedException("The SortParameterName property is only supported with stored procedure commands in SqlDataSource"); } if (arguments.SortExpression.Length > 0 && owner.DataSourceMode == SqlDataSourceMode.DataReader) { throw new NotSupportedException("SqlDataSource cannot sort. Set DataSourceMode to DataSet to enable sorting."); } if (arguments.StartRowIndex > 0 || arguments.MaximumRows > 0) { throw new NotSupportedException("SqlDataSource does not have paging enabled. Set the DataSourceMode to DataSet to enable paging."); } if (FilterExpression.Length > 0 && owner.DataSourceMode == SqlDataSourceMode.DataReader) { throw new NotSupportedException("SqlDataSource only supports filtering when the data source's DataSourceMode is set to DataSet."); } InitConnection(); DbCommand command = factory.CreateCommand(); command.CommandText = SelectCommand; command.Connection = connection; if (SelectCommandType == SqlDataSourceCommandType.Text) { command.CommandType = CommandType.Text; } else { command.CommandType = CommandType.StoredProcedure; if (SortParameterName.Length > 0 && arguments.SortExpression.Length > 0) { command.Parameters.Add(CreateDbParameter(SortParameterName, arguments.SortExpression)); } } if (SelectParameters.Count > 0) { InitializeParameters(command, SelectParameters, null, null, false); } Exception exception = null; if (owner.DataSourceMode == SqlDataSourceMode.DataSet) { DataView dataView = null; if (owner.EnableCaching) { dataView = (DataView)owner.Cache.GetCachedObject(SelectCommand, SelectParameters); } if (dataView == null) { SqlDataSourceSelectingEventArgs selectingArgs = new SqlDataSourceSelectingEventArgs(command, arguments); OnSelecting(selectingArgs); if (selectingArgs.Cancel || !PrepareNullParameters(command, CancelSelectOnNullParameter)) { return(null); } try { DbDataAdapter adapter = factory.CreateDataAdapter(); DataSet dataset = new DataSet(); adapter.SelectCommand = command; adapter.Fill(dataset, name); dataView = dataset.Tables [0].DefaultView; if (dataView == null) { throw new InvalidOperationException(); } } catch (Exception e) { exception = e; } int rowsAffected = (dataView == null) ? 0 : dataView.Count; SqlDataSourceStatusEventArgs selectedArgs = new SqlDataSourceStatusEventArgs(command, rowsAffected, exception); OnSelected(selectedArgs); if (exception != null && !selectedArgs.ExceptionHandled) { throw exception; } if (owner.EnableCaching) { owner.Cache.SetCachedObject(SelectCommand, selectParameters, dataView); } } if (SortParameterName.Length == 0 || SelectCommandType == SqlDataSourceCommandType.Text) { dataView.Sort = arguments.SortExpression; } if (FilterExpression.Length > 0) { IOrderedDictionary fparams = FilterParameters.GetValues(context, owner); SqlDataSourceFilteringEventArgs fargs = new SqlDataSourceFilteringEventArgs(fparams); OnFiltering(fargs); if (!fargs.Cancel) { object [] formatValues = new object [fparams.Count]; for (int n = 0; n < formatValues.Length; n++) { formatValues [n] = fparams [n]; if (formatValues [n] == null) { return(dataView); } } dataView.RowFilter = string.Format(FilterExpression, formatValues); } } return(dataView); } else { SqlDataSourceSelectingEventArgs selectingArgs = new SqlDataSourceSelectingEventArgs(command, arguments); OnSelecting(selectingArgs); if (selectingArgs.Cancel || !PrepareNullParameters(command, CancelSelectOnNullParameter)) { return(null); } DbDataReader reader = null; bool closed = connection.State == ConnectionState.Closed; if (closed) { connection.Open(); } try { reader = command.ExecuteReader(closed ? CommandBehavior.CloseConnection : CommandBehavior.Default); } catch (Exception e) { exception = e; } SqlDataSourceStatusEventArgs selectedArgs = new SqlDataSourceStatusEventArgs(command, reader.RecordsAffected, exception); OnSelected(selectedArgs); if (exception != null && !selectedArgs.ExceptionHandled) { throw exception; } return(reader); } }