Beispiel #1
0
 /// <summary>
 /// SQL��ҳ����
 /// PagingQuery
 /// </summary>
 public SqlPagingQuery(string cmdText, string keyField, int pageSize, int pageNumber, int pageCount, int recordCount, PagingType pagingType)
 {
     this.CommandText = cmdText;
     this.KeyField = keyField;
     this.PageSize = pageSize;
     this.PageNumber = pageNumber;
     this.PageCount = pageCount;
     this.PagingType = pagingType;
     this.RecordCount = recordCount;
 }
 public DataGridAttribute()
 {
     _showFooter = false; // do not show table footer by default
     _rowsCheckable = false; // do not show checkbox columns by default
     _rowsEditable = true; // show edit button by default
     _rowsDeletable = true; // show delete button by default
     _editText = "Düzenle"; //edit column default text 
     _dataSearchText = "Listele"; // default search text
     _deleteText = "Sil";//delete column default text 
     _edittingRowDataLoadType = DataLoadType.AsPage; // default row data editing event type: AsPage (redirects a new page)
     _pagingType = PagingType.ClientSide; // default paging is ClientSide (we will use js)
     _showSearchSection = false; // do not generate a filter section by default
 }
 public DataGridAttribute()
 {
     _showFooter              = false;                 // do not show table footer by default
     _rowsCheckable           = false;                 // do not show checkbox columns by default
     _rowsEditable            = true;                  // show edit button by default
     _rowsDeletable           = true;                  // show delete button by default
     _editText                = "Düzenle";             //edit column default text
     _dataSearchText          = "Listele";             // default search text
     _deleteText              = "Sil";                 //delete column default text
     _edittingRowDataLoadType = DataLoadType.AsPage;   // default row data editing event type: AsPage (redirects a new page)
     _pagingType              = PagingType.ClientSide; // default paging is ClientSide (we will use js)
     _showSearchSection       = false;                 // do not generate a filter section by default
 }
Beispiel #4
0
        protected override async Task OnAfterRenderAsync(bool firestime)
        {
            if (firestime)
            {
                int delay = 0;
                while (delay <= DelayCount)
                {
                    if (Data.Count() == 0)
                    {
                        await Task.Delay(1000);
                    }
                    else
                    {
                        break;
                    }
                    delay++;
                }


                DTConfig.pagingType = PagingType != 0 ? PagingType.GetDescription() : null;
                DTConfig.colReorder = ColReorder;
                DTConfig.responsive = Responsive;
                DTConfig.scrollX    = ScrollX;
                DTConfig.scrollY    = ScrollY;
                DTConfig.keys       = Keys;
                DTConfig.ordering   = Ordering;
                DTConfig.info       = Info;
                DTConfig.paging     = Paging;
                DTConfig.order      = new object[order.Count()][];
                DTConfig.dom        = Dom;
                DTConfig.stateSave  = StateSave;
                DTConfig.language   = Language != 0 ? new { url = Language.GetDescription() } : null;



                var orderIndex = 0;
                foreach (var item in order)
                {
                    DTConfig.order[orderIndex] = new object[2] {
                        item.Key, item.Value
                    };
                    orderIndex++;
                }

                JsInterop.DataTable(jSRuntime, ID, DTConfig);
                StateHasChanged();
            }
        }
Beispiel #5
0
            public static void SetNode(PagingType type)
            {
                if (Selected != null)
                {
                    var index = Nodes.IndexOf(Selected);
                    switch (type)
                    {
                    case PagingType.Backward:
                        index--;
                        if (index < 0)
                        {
                            index = Nodes.Count() - 1;
                        }
                        break;

                    default:
                        index++;
                        if (index > (Nodes.Count() - 1))
                        {
                            index = 0;
                        }
                        break;
                    }
                    Selected = Nodes[index];
                }
                else
                {
                    if (Nodes.Count() > 0)
                    {
                        switch (type)
                        {
                        case PagingType.Backward:
                            Selected = Nodes[Nodes.Count - 1];
                            break;

                        default:
                            Selected = Nodes[0];
                            break;
                        }
                    }
                }
            }
Beispiel #6
0
        private static ObjectType1[] listObjectsRestrictedAndSorted(modelPortType modelPort, XmlQualifiedName type)
        {
            // let's say we want to get first 3 users, sorted alphabetically by user name

            QueryType  queryType  = new QueryType();        // holds search query + paging options
            PagingType pagingType = new PagingType();

            pagingType.maxSize = 3;
            ItemPathType orderBy = createItemPathType("name");

            pagingType.orderBy        = orderBy;
            pagingType.orderDirection = OrderDirectionType.ascending;

            queryType.paging = pagingType;

            searchObjects         request  = new searchObjects(type, queryType, null);
            searchObjectsResponse response = modelPort.searchObjects(request);

            ObjectListType objectList = response.objectList;

            ObjectType1[] objects = objectList.@object;
            return(objects);
        }
 /// <summary>
 /// Pagination button display options.
 /// </summary>
 /// <param name="pagingType"></param>
 /// <returns></returns>
 public GridBuilder <T> PagingType(PagingType pagingType)
 {
     this.Grid.PagingType = pagingType;
     return(this);
 }
Beispiel #8
0
 public Pager()
 {
     pagingType = PagingType.Numeric;
 }
Beispiel #9
0
 public GridBuilder <T> PagingType(PagingType pagingType)
 {
     this.Component.PagingType = pagingType;
     return(this);
 }
Beispiel #10
0
        protected void WriteHtml(HtmlTextWriter writer)
        {
            var jsName = this.Name.Replace("-", "__");

            // create the table
            writer.WriteLine(String.Format("<table id=\"{0}\" class=\"table table-striped table-bordered\" cellspacing=\"0\" width=\"100%\"></table>", this.Name));

            int index = 0;

            foreach (var col in this.Columns)
            {
                col.Index = index++;
            }

            // if we're serializing data, write it out here...
            // TODO, limit the serializaton to the bound columns
            if (this.DataSource != null)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Script);
                // TODO, convert this object, it will need to add orthagonal data, and handle custom column rendering
                List <Dictionary <string, dynamic> > processed = new List <Dictionary <string, object> >();
                foreach (var row in this.DataSource)
                {
                    Dictionary <string, dynamic> addRow = new Dictionary <string, dynamic>();
                    foreach (var col in this.Columns)
                    {
                        if (col.ColumnType == ColumnType.Render || col.ColumnType == ColumnType.Button)
                        {
                            continue;
                        }
                        else
                        {
                            string val = getPropertyValue(row, col);
                            if (!String.IsNullOrWhiteSpace(col.Template))
                            {
                                addRow.Add("CustomColumn_" + col.Index.ToString(), val);
                            }
                            else
                            {
                                Type t = row.GetType().GetProperty(col.Member).PropertyType;
                                if (t == typeof(DateTime))
                                {
                                    // going to send orthogonal
                                    DateTime realVal = (DateTime)row.GetType().GetProperty(col.Member).GetValue(row, null);
                                    addRow.Add(col.Member, new { display = val, timestamp = realVal.ToString("yyyyMMddhhmmss") });
                                }
                                else
                                {
                                    addRow.Add(col.Member, val);
                                }
                            }
                        }
                    }
                    processed.Add(addRow);
                }


                writer.WriteLine("var " + jsName + "_Data = " + Json.Encode(processed));
                writer.RenderEndTag();
            }

            // begin creating the datatable initialiaztion script
            writer.RenderBeginTag(HtmlTextWriterTag.Script);
            writer.WriteLine(String.Format("$(document).ready(function () {{ var {1} = $('#{0}').DataTable({{", this.Name, jsName));

            if (this.Paginate || this.Clean)
            {
                // paging type
                if (PagingType != PagingType.simple_numbers)
                {
                    writer.WriteLine("pagingType: '" + PagingType.ToString() + "',");
                }

                // page sizes
                if (PageSizes != null && PageSizes.Count() > 0)
                {
                    writer.Write("lengthMenu: [[");
                    writer.Write(string.Join(",", PageSizes));
                    writer.Write("],[");
                    writer.Write(string.Join(",", PageSizes).Replace("-1", "'All'"));
                    writer.WriteLine("]],");
                }

                // page size
                if (PageSize != 0)
                {
                    writer.WriteLine("displayLength: " + PageSize + ",");
                }
            }
            else
            {
                writer.WriteLine("paging: false,");
            }

            if (this.Clean)
            {
                writer.WriteLine("sDom: 't',");
            }

            // ScrollX
            if (ScrollX || Freeze > 0)
            {
                writer.WriteLine("scrollX: true,");
            }

            // ScrollY
            if (!String.IsNullOrEmpty(ScrollY))
            {
                writer.WriteLine("scrollY: '" + ScrollY + "',");
                writer.WriteLine("scrollCollapse: true,");
            }

            writer.WriteLine("columns: [");

            StringBuilder dataMethods = new StringBuilder();
            int           colIndex    = 0;

            // loop through the columns
            foreach (var c in this.Columns)
            {
                c.Index = colIndex;
                c.ProcessResponsive();

                writer.Write("{");

                if (c.ColumnType == ColumnType.Bound)
                {
                    #region Bound
                    if (String.IsNullOrEmpty(c.Title))
                    {
                        c.Title = StringHelper.SplitPascalCase(c.Member);
                    }

                    if (c.Type == typeof(DateTime))
                    {
                        writer.Write(string.Format(" data: \"{0}.display\", sort: \"{0}.timestamp\", ", c.Member));
                    }
                    else
                    {
                        writer.Write(String.Format(" data: \"{0}\", ", c.Member));
                    }

                    if (c.Width > 0)
                    {
                        writer.Write(string.Format("width: {0}, ", c.Width));
                    }


                    writer.Write(string.Format("title: \"{0}\", ", c.Title));
                    if (!String.IsNullOrEmpty(c.Format))
                    {
                        dataMethods.AppendLine(String.Format("d.columns[{0}][\"format\"] = '{1}';", colIndex, c.Format));
                    }
                    if (!String.IsNullOrWhiteSpace(c.Render))
                    {
                        writer.Write(String.Format("render: {0}, ", c.Render));
                    }
                    // var x = typeof(T).GetProperty(c.Member).PropertyType.Name;
                    #endregion
                }
                else if (c.ColumnType == ColumnType.Custom)
                {
                    #region Custom
                    c.Member = "CustomColumn_" + colIndex.ToString();
                    if (String.IsNullOrEmpty(c.Title))
                    {
                        c.Title = "Custom";
                    }
                    writer.Write(String.Format(" data: \"{0}\", title: \"{1}\", ", c.Member, c.Title));
                    // c.Searchable = false;
                    // c.Sortable = false;

                    dataMethods.AppendLine(String.Format("d.columns[{0}][\"template\"] = '{1}';", colIndex, HttpUtility.HtmlEncode(c.Template)));

                    #endregion
                }
                else if (c.ColumnType == ColumnType.Render)
                {
                    #region Render
                    var rc = (RenderColumn <T>)c;
                    if (String.IsNullOrEmpty(c.Title))
                    {
                        c.Title = "Render";
                    }
                    writer.Write(String.Format(" render: {0}, title: \"{1}\", ", rc.RenderMethod, c.Title));
                    #endregion
                }
                else if (c.ColumnType == ColumnType.Button)
                {
                    #region Button
                    List <dynamic> buttonDefs = new List <dynamic>();
                    foreach (var b in ((ButtonColumn <T>)c).Buttons)
                    {
                        buttonDefs.Add(b);
                    }
                    string renderJs = string.Format("function (data, type, row) {{ return talondatatable_renderbuttons(row, {0}); }}", Json.Encode(buttonDefs));
                    // addRow.Add("ButtonColumn_" + col.Index.ToString(), buttonDefs);
                    writer.Write(String.Format(" data: \"ButtonColumn_{0}\", title: \"{1}\", render: {2}, ", c.Index, c.Title, renderJs));
                    #endregion
                }

                if (!String.IsNullOrEmpty(c.ClassName))
                {
                    writer.Write(String.Format("className: \"{0}\", ", c.ClassName));
                }
                if (c.Hidden)
                {
                    writer.Write("visible: false, ");
                }
                if (c.Width > 0)
                {
                    writer.Write(String.Format("width: {0}, ", c.Width));
                }
                if (!c.Searchable)
                {
                    writer.Write("searchable: false, ");
                }
                if (!c.Sortable)
                {
                    writer.Write("sortable: false, ");
                }

                writer.WriteLine("},");

                colIndex++;
            }
            // finish the initialization script
            writer.WriteLine("],");

            var orders = this.Columns.Where(c => c.SortOrder > 0);

            if (orders.Count() > 0)
            {
                writer.Write("order: [");
                foreach (var col in orders.OrderBy(o => o.SortOrder))
                {
                    writer.Write("[ " + col.Index + ", '" + col.SortDirection.ToString() + "' ],");
                }
                writer.WriteLine("],");
            }

            if (this.DataSource != null)
            {
                writer.WriteLine("data: " + jsName + "_Data,");
            }
            else if (!String.IsNullOrEmpty(this.AjaxSource))
            {
                writer.WriteLine("processing: true, serverSide: true, searchDelay: 750, ajax: {");
                writer.WriteLine("url: \"" + this.AjaxSource + "\", type: \"POST\",");
                if (dataMethods.Length > 0)
                {
                    writer.WriteLine("data: function(d) {");
                    writer.WriteLine(dataMethods.ToString());
                    writer.WriteLine("}");
                }
                writer.WriteLine(" },");
            }

            writer.WriteLine("});");

            if (Freeze > 0)
            {
                writer.WriteLine(String.Format("new $.fn.dataTable.FixedColumns( {0}, {{ leftColumns: {1} }});", jsName, Freeze));
            }

            writer.WriteLine(String.Format("$('#{0}').data('datatable', {1});", this.Name, jsName));

            writer.WriteLine("});");

            writer.RenderEndTag();
        }
Beispiel #11
0
 /// <summary>
 /// Pagination button display options.
 /// </summary>
 /// <param name="pagingType"></param>
 /// <returns></returns>
 public TableOptionsFactory <TModel> PagingType(PagingType pagingType)
 {
     _jObject.Add($"pagingType", new JValue(pagingType.ToString().ToLower()));
     return(this);
 }
Beispiel #12
0
 public DataTable SetPagingType(PagingType pagingType)
 {
     this._pagingType = pagingType;
     return(this);
 }
Beispiel #13
0
        private static ObjectType1[] listObjectsRestrictedAndSorted(modelPortType modelPort, XmlQualifiedName type)
        {
            // let's say we want to get first 3 users, sorted alphabetically by user name

            QueryType queryType = new QueryType();          // holds search query + paging options
            PagingType pagingType = new PagingType();
            pagingType.maxSize = 3;
            ItemPathType orderBy = createItemPathType("name");
            pagingType.orderBy = orderBy;
            pagingType.orderDirection = OrderDirectionType.ascending;

            queryType.paging = pagingType;

            searchObjects request = new searchObjects(type, queryType, null);
            searchObjectsResponse response = modelPort.searchObjects(request);

            ObjectListType objectList = response.objectList;
            ObjectType1[] objects = objectList.@object;
            return objects;
        }
Beispiel #14
0
 /// <summary>
 /// ����
 /// </summary>
 public SqlPager()
 {
     this.m_Timeout = 30;
     this.m_PagingType = PagingType.ReverseOrder;
 }
Beispiel #15
0
 public Paging(PagingType pagingType, GrammarType grammarType = GrammarType.Original)
 {
     prefix       = Str_char(5);
     _pageType    = pagingType;
     _grammarType = grammarType;
 }