private static string GenerateOTableScript(String tableName, DataTableAttributes dataTableParams, AjaxOptions ajaxOptions) { string scriptText = string.Empty; scriptText += "$(document).ready(function () {\n"; //scriptText += "alert('hey!');\n"; scriptText += string.Format("\tvar oTable = $('#{0}').dataTable({{\n", tableName); scriptText += string.Format("\t\"aoColumnDefs\": {0},\n", GenerateColumnDefsForOTable(dataTableParams.ColumnDefs)); scriptText += string.Format("\t\"bAutoWidth\": {0},\n", dataTableParams.AutoWidth.ToLowerString()); scriptText += string.Format("\t\"bDeferRender\": {0},\n", dataTableParams.DeferRender.ToLowerString()); scriptText += string.Format("\t\"bFilter\": {0},\n", dataTableParams.Filter.ToLowerString()); scriptText += string.Format("\t\"bInfo\": {0},\n", dataTableParams.Info.ToLowerString()); scriptText += string.Format("\t\"bJQueryUI\": {0},\n", dataTableParams.JQueryUI.ToLowerString()); scriptText += string.Format("\t\"bLengthChange\": {0},\n", dataTableParams.LengthChange.ToLowerString()); scriptText += string.Format("\t\"bPaginate\": {0},\n", true.ToLowerString()); scriptText += string.Format("\t\"bProcessing\": {0},\n", true.ToLowerString()); scriptText += string.Format("\t\"bScrollInfinite\": {0},\n", dataTableParams.ScrollInfinite.ToLowerString()); scriptText += string.Format("\t\"bServerSide\": {0},\n", true.ToLowerString()); scriptText += string.Format("\t\"bSort\": {0},\n", dataTableParams.Sort.ToLowerString()); scriptText += string.Format("\t\"bSortClasses\": {0},\n", dataTableParams.SortClasses.ToLowerString()); scriptText += string.Format("\t\"bStateSave\": {0},\n", dataTableParams.StateSave.ToLowerString()); if (!string.IsNullOrEmpty(dataTableParams.ScrollX)) scriptText += string.Format("\t\"sScrollX\": {0},\n", dataTableParams.ScrollX); if (!string.IsNullOrEmpty(dataTableParams.ScrollY)) scriptText += string.Format("\t\"sScrollY\": {0},\n", dataTableParams.ScrollY); scriptText += string.Format("\t\"sPaginationType\": \"{0}\",\n", GetDescription(dataTableParams.PaginationType)); scriptText += string.Format("\t\"sAjaxSource\": \"{0}\",\n", ajaxOptions.Url); scriptText += string.Format("\t\"sServerMethod\": \"{0}\"\n", ajaxOptions.HttpMethod); scriptText += "\t}); \n"; scriptText += "});"; //+ string.Format("\t\"\": {0},\n", ) return scriptText; }
public static MvcHtmlString DataTable(this AjaxHelper ajaxHelper, String tableName, AjaxOptions ajaxOptions, DataTableAttributes dataTableParams ) { //ajaxOptions.Confirm //ajaxOptions.HttpMethod // fnServerData :: type //ajaxOptions.InsertionMode //ajaxOptions.LoadingElementDuration //ajaxOptions.LoadingElementId //ajaxOptions.OnBegin // fnServerParams ?? //ajaxOptions.OnComplete // $.ajax :: complete(jqXHR, textStatus) //ajaxOptions.OnFailure // $.ajax :: error(jqXHR, textStatus, errorThrown) //ajaxOptions.OnSuccess // $.ajax :: success //ajaxOptions.UpdateTargetId ??? //ajaxOptions.Url= // sAjaxSource // string tableId = ResolveTableId(tableName, ajaxOptions.UpdateTargetId); // TagBuilder tableTag = TableTagBuilder(tableId, tableName, ajaxOptions.UpdateTargetId); // TagBuilder builder = new TagBuilder("script"); // builder.InnerHtml = @" ////var oTable; ////var generated_aoColumnDefs = [@generateColumnsForOTable()]; ////var generated_sAjaxSource = '@Url.Action(""GetTableRows"", new { TableName = Model.TableDefinition.Name })'; // //$(document).ready(function () { // // var oTable = $('#tblRows').dataTable({ // ""aoColumnDefs"": {0}, // ""bJQueryUI"": true, // ""aLengthMenu"": [[5, 10, 25, 100, -1], [5, 10, 25, 100, ""All""]], // ""bSort"": true, // ""aaSorting"": [[1, ""asc""]], // ""bFilter"": false, /* Searching will not be implemented in the this release */ // ""bPaginate"": true, // ""sPaginationType"": ""full_numbers"", // ""bAutoWidth"": false, // ""bProcessing"": true, // ""bServerSide"": true, // ""bStateSave"": true, //why it doesn't work? // ""sAjaxSource"": generated_sAjaxSource, // ""fnServerData"": function (sSource, aoData, fnCallback) { // UpdateUrl(); // FetchServerData(this, sSource, aoData, fnCallback); // } // //}); //"; //return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal)); return MvcHtmlString.Create(string.Format("<script type='text/javascript'>\n{0}\n</script>", GenerateOTableScript(tableName, dataTableParams, ajaxOptions))); }