public int CompareTo(object obj) { SortRec Rec = (SortRec)obj; return(this.comparer.Compare(this.key, Rec.key)); }
public override void EmitScriptAndHtml(StringBuilder script, StringBuilder html) { AddClass("table"); AddClass("table-bordered"); JsObject init = new JsObject(); init.AddProperty("paging", false); init.AddProperty("select", true); init.AddRawProperty("createdRow", GetCreatedRowEventScript()); //jsArray extensions = new jsArray(); //extensions.AddObject("table"); //init.AddProperty("extensions", extensions); JsArray columns = new JsArray(); foreach (var col in Columns) { var jscol = new JsObject(); jscol.AddProperty("title", col.Caption); jscol.AddProperty("name", col.Field_Bind); columns.AddObject(jscol); } init.AddProperty("columns", columns); // сортировка List<SortRec> sortArray = new List<SortRec>(); int colIndex = 0; foreach (var col in Columns) { if (col.Sort != bsGridColumnSort.none) { var sortRec = new SortRec() { ColIndex = colIndex }; sortRec.SortIndex = Math.Abs((int)col.Sort); if ((int)col.Sort > 0) sortRec.AscDesc = "asc"; else sortRec.AscDesc = "desc"; sortArray.Add(sortRec); } colIndex++; } JsArray order = new JsArray(); foreach (SortRec rec in sortArray.OrderBy((r) => r.SortIndex)) { var jsorder = new JsArray(); jsorder.AddObject(rec.ColIndex); jsorder.AddObject(rec.AscDesc); order.AddObject(jsorder); } if (order.Length > 0) init.AddProperty("order", order); //if (IsShowCheckboxes) // init.AddProperty("checkbox", true); //init.AddProperty("icon", IsShowIcons); //ObservableCollection<string> selectedRows = null; //if (SelectedRows_Bind != null) //{ // selectedRows = Model.GetPropertyValue<ObservableCollection<string>>(SelectedRows_Bind); // init.AddProperty("checkbox", true); // script.AppendLine("var " + SelectedRows_Bind + "=function(event, data) {"); // script.AppendLine(" bindingHub.server.sendSelectedRowsChanged('" + Model.BindingId + "', '" + SelectedRows_Bind + "', data.node.key, data.node.isSelected()); "); // script.AppendLine("}"); // init.AddRawProperty("select", SelectedRows_Bind); //} //script.AppendLine("var renderColumns=function(event, data) {"); //script.AppendLine(" var node = data.node;"); //script.AppendLine(" var row = node.data.row;"); //script.AppendLine(" row.node = node;"); //script.AppendLine(" var td = $(node.tr).find('>td');"); //int i = -1; //foreach (var col in Columns.Where(c => c.Hidden != true)) //{ // i++; // if (col.CellTemplate != null) // { // script.AppendLine(@" var f" + i + "=function(row){"); // if (col.CellTemplateJS != null) // script.AppendLine(col.CellTemplateJS); // script.AppendLine(@" return Mustache.render(""" + col.CellTemplate + @""", row);"); // script.AppendLine(@" };"); // if (i != 0) // script.AppendLine(" td.eq(" + i + ").html(f" + i + "(row));"); // else // script.AppendLine(" td.eq(" + i + ").find('.fancytree-title').html(f" + i + "(row));"); // } // else // { // if (i != 0) // script.AppendLine(" td.eq(" + i + ").text(row['" + col.Field_Bind + "']);"); // else // script.AppendLine(" td.eq(" + i + ").find('.fancytree-title').text(row['" + col.Field_Bind + "']);"); // } //} //script.AppendLine("}"); //init.AddRawProperty("renderColumns", "renderColumns"); script.AppendLine("$('#" + UniqueId + "').DataTable(" + init.ToJson() + ");"); //if (ClickAction != null) //{ // script.AppendLine("$('#" + UniqueId + "').on('click',function(event){"); // ClickAction.EmitJsCode(Script); // script.AppendLine("});"); //} html.Append("<table id='" + UniqueId + "' " + GetAttrs() + ">"); //html.Append("<colgroup>"); //foreach (var col in Columns) // col.EmitColgroupCol(Html, Script); //html.Append("</colgroup>"); //html.Append("<thead>"); //html.Append("<tr>"); //foreach (var col in Columns.Where(c => c.Hidden != true)) // html.Append("<th>" + col.Caption + "</th>"); //html.Append("</tr>"); //html.Append("</thead>"); //html.Append("<tbody>"); //html.Append("<tr>"); //foreach (var col in Columns.Where(c => c.Hidden != true)) // html.Append("<td></td>"); //html.Append("</tr>"); //html.Append("</tbody>"); html.Append("</table>"); base.EmitScriptAndHtml(script, html); }