/// /// /// /// /// Type.registerNamespace("nblf.ui"); Sys.CultureInfo.CurrentCulture.numberFormat.NumberGroupSeparator = ""; //定义枚举 nblf.ui.SelectMode = function () { }; nblf.ui.SelectMode.prototype = { None: 0, SingleRow: 1, MultiRow: 2, RadioButton: 3, CheckBox: 4 } nblf.ui.SelectMode.registerEnum("nblf.ui.SelectMode"); nblf.ui.DataGridColumn = function () { this.Width = ""; //不设宽度 this.Align = ""; //文字对齐 this.Style = ""; this.HeaderText = ""; //页眉文本 this.SortExpression = ""; //排序字段 // this.AllowEdit = false; //是否启用编辑模式(不编辑时会以span元素显示,单击span会替换成需要显示的控件) this.CellTemplate = ""; //自定义行单元格模板,内容值用{Bind 列名,格式化}代替,初始化时会替换 this.CellFormatter = null; //#region 创建Span模板列 this.CreateFieldSpan = function (FieldName, FormatString) { var BindString = FieldName; if (FormatString != "") BindString += "," + FormatString; this.CellTemplate = "{Bind " + BindString + "}"; } //#endregion //#region 超链接模板列 this.CreateFieldHyperLink = function (FieldName, FormatString, url, target) { // Array.add(this.DataField,FieldName); // Array.add(this.DataField,FieldUrl); var BindString = FieldName; if (FormatString != "") BindString += "," + FormatString; if (FormatString != "") BindString += "," + FormatString; this.CellTemplate = "{Bind " + BindString + "}"; } //#endregion //#region 图片列 this.CreateFieldImage = function (FieldName, height, width) { this.CellTemplate = ""; } //#endregion //#region 数字输入列绑定用 this.CreateFieldNumberSpinner = function (FieldName, FormatString, min, max, increment) { var BindString = FieldName; if (FormatString != "") BindString += "," + FormatString; this.CellTemplate = ""; } //#endregion //#region 数字输入列 this.CreateNumberSpinner = function (name, defaultValue, min, max, increment) { this.CellTemplate = ""; } //#endregion //#region 创建文本框模板列 this.CreateFieldTextBox = function (FieldName, FormatString) { // Array.add(this.DataField,FieldName); var BindString = FieldName; if (FormatString != "") BindString += "," + FormatString; this.CellTemplate = ""; } //#endregion //#region 创建普通文本框列,带name属性,便于查找控件 this.CreateTextBox = function (name, defaultValue) { this.CellTemplate = ""; } //#endregion //#region 创建密码文本框模板列 this.CreateFieldPassWord = function (FieldName) { // Array.add(this.DataField,FieldName); this.CellTemplate = ""; } //#endregion //#region 创建普通密码文本框列,带name属性,便于查找控件 this.CreateTextBox = function (name, defaultValue) { this.CellTemplate = ""; } //#endregion //#region 创建CheckBox模板列 this.CreateFieldCheckBox = function (FieldName, Enabled) { // Array.add(this.DataField,FieldName); var ss = "disabled"; if (Enabled == true) ss = ""; this.CellTemplate = ""; } //#endregion //#region 创建CheckBox this.CreateCheckBox = function (name, defaultValue) { this.CellTemplate = ""; } //#endregion //#region 创建radio模板列 this.CreateFieldRadio = function (FieldName) { // Array.add(this.DataField,FieldName); this.CellTemplate = ""; } //#endregion //#region 创建radio this.CreateRadio = function (name, defaultValue) { this.CellTemplate = ""; } //#endregion //#region 创建textarea模板列 this.CreateFieldMultTextBox = function (FieldName, height) { // Array.add(this.DataField,FieldName); this.CellTemplate = ""; } //#endregion //#region 创建textarea模板列 this.CreateMultiTextBox = function (name, defaultValue, height) { this.CellTemplate = ""; } //#endregion //#region 创建select下拉框列ListArray必须是一个数组对象拥有二个属性,text和value this.CreateFieldDropDownList = function (FieldName, FieldValue, ListArray) { // Array.add(this.DataField,FieldName); this.CellTemplate = ""; } //#endregion //#region 创建select下拉框列ListArray必须是一个数组对象拥有二个属性,text和value this.CreateFieldDropDownList2 = function (FieldName, FieldValue, ListArray) { // Array.add(this.DataField,FieldName); this.CellTemplate = ""; } //#endregion //#region 创建select下拉框列 this.CreateDropDownList = function (name, ListArray) { this.CellTemplate = ""; } //#endregion } nblf.ui.DataGridColumn.registerClass("nblf.ui.DataGridColumn", null); nblf.ui.DataGrid = function (divid) { this.ParentElement = $(document); //要加入的父容器 this.id = divid; this.ApplicationPath = ""; this.AllowPaging = false; //是否启用分页 this.Columns = new Array(); //列集合 this.DataSource = new Array(); //接受一个数组对象 this.FixLeftColumns = 0; //左固定N列 this.SelectMode = nblf.ui.SelectMode.None; //枚举 this.ShowIndexColumn = false; //是否显示行号 this.IsFixHeader = false; //是否固定表头 this.Width = ""; //宽度 this.Height = ""; //高度 this.TableWidth = "100%"; //table宽度 this.IsHoverColor = true; //是否启用移入移出变色 this.RightMenu = ""; //右键菜单对象ID this.LeftMenu = ""; //左键菜单对象ID this.DataKeyName = ""; //主键名称 this.TableID = this.id + "_Table"; this.DivTableID = this.id + "_DivTable"; this.PageID = this.id + "_Page"; this.DataPager = new DataPager(this.PageID); //分页控件 this.DataPager.ParentElement = this.ParentElement; this.SortingID = this.id + "_DivSorting"; this.ShowHeader = true; //是否显示表头 this.ListSorting = new Array(); //排序列表接受text,value二个字段的对象 this.SortExpression = ""; //当前排序字段名称 this.ViewSortDirection = ""; //排序状态asc或是desc // this.DataPager.Parent = this; this.PaperModel = 0; //分页模式(0默认模式从数据库分页,1内存分页) var JavaDataTable = null; var EventHandler = new Sys.EventHandlerList(); var My = this; //#region 对象数组转换成JavaDataTable this.GetJavaDataTable = function () { if (JavaDataTable == null) return null; var index = 0; $(My.DataSource).each(function () { var ColIndex = 0; var row = this; $(JavaDataTable.Columns).each(function () { JavaDataTable.Rows[index].ItemArray[ColIndex] = row[this.ColumnName]; ColIndex++; }); }); } //#endregion //#region 新增行 this.Add_Row = function (model) { Array.add(this.DataSource, model); var html = new Sys.StringBuilder(); CreateRow(html, model, this.DataSource.length - 1); $("#" + this.TableID).append(html.toString()); } //#endregion //#region 新增行 this.Add_NewRow = function () { model = new Object(); $(My.Columns).each(function () { var ColName=$(this.CellTemplate).attr("ColName"); model[ColName] = ""; }); Array.add(this.DataSource, model); var html = new Sys.StringBuilder(); CreateRow(html, model, this.DataSource.length - 1); $("#" + this.TableID).append(html.toString()); } //#endregion //#region 删除行 this.Del_Row = function (RowIndex) { //if (this.PaperModel == 0) { UpdateSource(); Array.removeAt(My.DataSource, RowIndex); //} else { // var index = (this.DataPager.PageIndex - 1) * this.DataPager.PageSize + parseInt(RowIndex); // Array.removeAt(My.DataSource, index); //} RefshDataSource(); } //#endregion //#region 获取所有行 this.Get_Rows = function () { return $("#" + this.TableID + " tr[name='DataGridRow']", My.ParentElement); } //#endregion //#region 获取行 this.Get_Row = function (RowIndex) { return $("#" + this.TableID + " tr[index='" + RowIndex + "']", My.ParentElement); } //#endregion //#region 获取行对应数据源对象 this.Get_Model = function (RowIndex) { return this.DataSource[RowIndex]; } //#endregion //#region 获取选择行数据 this.GetSelectListModel = function () { var rows = null; if (My.SelectMode == nblf.ui.SelectMode.SingleRow || My.SelectMode == nblf.ui.SelectMode.MultiRow) { rows = $("#" + this.TableID + " tr[Selected='true']", My.ParentElement); } if (My.SelectMode == nblf.ui.SelectMode.RadioButton) { rows = $("#" + My.TableID + " input[name='SelectRadioButton']:checked", My.ParentElement).parentsUntil("tr").parent(); } if (this.SelectMode == nblf.ui.SelectMode.CheckBox) { rows = $("#" + My.TableID + " input[name='SelectCheckBox']:checked", My.ParentElement).parentsUntil("tr").parent(); } var ListArray = new Array(); $(rows).each(function () { var rowIndex = $(this).attr("index"); var row = My.DataSource[rowIndex]; Array.add(ListArray, row); }); return ListArray; } //#endregion //#region 获取选择行 this.Get_SelectRow = function () { var rows = null; if (this.SelectMode == nblf.ui.SelectMode.SingleRow || this.SelectMode == nblf.ui.SelectMode.MultiRow) { rows = $("#" + this.TableID + " tr[Selected='true']", My.ParentElement); } if (this.SelectMode == nblf.ui.SelectMode.RadioButton) { rows = $("#" + this.TableID + " input[name='SelectRadioButton']:checked", My.ParentElement).parentsUntil("tr").parent(); } if (this.SelectMode == nblf.ui.SelectMode.CheckBox) { rows = $("#" + this.TableID + " input[name='SelectCheckBox']:checked", My.ParentElement).parentsUntil("tr").parent(); } return rows; } //#endregion //#region 获取总页数 this.Get_PageIndex = function () { return this.DataPager.PageIndex; } //#endregion //#region 获取每页行数 this.Get_PageSize = function () { return this.DataPager.PageSize; } //#endregion //#region 全选 this.CheckedSelectAll = function () { $("#" + My.TableID + "_SelectAll")[0].checked = true; $("#" + My.TableID + " input[name=SelectCheckBox]").trigger("click"); } //#endregion //#region 设置总行数 this.Set_RowCount = function (RowCount) { this.DataPager.RowCount = RowCount; this.DataPager.MathPageNumber(); } //#endregion //#region 取得排序名称 this.Get_SortName = function () { var SortName = $("#" + this.SortingID + " .easyui-combobox", My.ParentElement).combobox("getValue"); var AscName = $("#" + this.SortingID + " input[checked]", My.ParentElement).val(); if (SortName == "" || SortName == "0") return ""; return SortName + " " + AscName; } //#endregion //#region 设置当前页数 this.SetPageIndex = function (PageIndex) { My.DataPager.SetPageIndex(PageIndex); } //#endregion //#region 设置当前页数 this.SerPageIndex = function (PageIndex) { My.DataPager.SetPageIndex(PageIndex); } //#endregion //#region 设置当前页数 this.SetPageSize = function (PageSize) { My.DataPager.PageSize = PageSize; } //#endregion //#region 点击行时触发 this.add_RowClick = function (handler) { EventHandler.addHandler('RowClick', handler); } //#endregion //#region 引发点击行事件 function OnRowClick() { var h = EventHandler.getHandler('RowClick'); if (h) h(this, Sys.EventArgs.Empty); } //#endregion //#region 点击排序时触发 this.Sorting = function (handler) { EventHandler.addHandler('Sorting', handler); } //#endregion //#region 点击排序时触发 function OnSorting() { var h = EventHandler.getHandler('Sorting'); if (h) h(this, Sys.EventArgs.Empty); } //#endregion //#region 分页改变事件 this.add_PageIndexChanged = function (handler) { EventHandler.addHandler('PageIndexChanged', handler); } //#endregion //#region 初始化 this.Init = function () { if ($("#" + My.DivTableID, My.ParentElement).length > 0) return; if (My.ListSorting.length > 0) { $("
升序降序
").appendTo($("#" + My.id, My.ParentElement)); //初始化下拉框 if (My.ListSorting[0].value != "0") { var model = new Object(); model.text = "默认"; model.value = "0"; Array.insert(My.ListSorting, 0, model); } $("#" + My.SortingID + " .easyui-combobox", My.ParentElement).combobox({ data: My.ListSorting, valueField: 'value', textField: 'text' }); $("#" + My.SortingID + " .easyui-combobox", My.ParentElement).combobox("select", "0"); } //如果需要固定表头,那么添加div属性 //if (My.IsFixHeader == true) { // $("
").appendTo($("#" + My.id, My.ParentElement)); //} //else { $("
").appendTo($("#" + My.id, My.ParentElement)); //} if (My.AllowPaging == true) CreatePage(); if (My.Columns.length > 0) { var html = new Sys.StringBuilder(); html.append(""); CreateHeader(html); html.append("
"); $("#" + My.DivTableID, My.ParentElement).html(html.toString()); } } //#endregion //#region 加载Html表格 this.LoadHtml = function (source) { $("#" + My.DivTableID, My.ParentElement).html(source); //下拉框选择值 var ListDropDownList = $("#" + My.TableID, My.ParentElement).find("select[FieldValue]"); if (ListDropDownList.length > 0) { $(ListDropDownList).each(function () { var value = $(this).attr("FieldValue"); //数据源的值 if (value != "") { var options = $(this).find("option"); $(options).each(function () { if ($(this).val() == value) $(this).attr("selected", "selected"); }); } }); } if (My.SortExpression != "") { var th = $("#" + My.DivTableID + " th[SortExpression=" + My.SortExpression + "]", My.ParentElement); if (My.ViewSortDirection == "asc") th.append(""); if (My.ViewSortDirection == "desc") th.append(""); } //排序事件 $("#" + My.DivTableID + " th[SortExpression]", My.ParentElement).bind("click", function () { //去除 My.SortExpression = $(this).attr("SortExpression"); //当前排序字段名称 if (My.SortExpression == "" || My.SortExpression == undefined) return; if (My.ViewSortDirection == "asc") { My.ViewSortDirection = "desc"; } else { My.ViewSortDirection = "asc"; } OnSorting(); //引发排序事件 }); //单选行事件 if (My.SelectMode == nblf.ui.SelectMode.SingleRow) { //选择行事件 $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind("click", function () { $(this).attr("Selected", "true"); $(this).addClass("DataGridSelectRowStyle"); var index = $(this).attr("index"); var SelectTR = $("#" + My.TableID + " tr[Selected='true']", My.ParentElement).not("[index='" + index + "']"); $(SelectTR).attr("Selected", "false"); $(SelectTR).removeClass("DataGridSelectRowStyle"); $(SelectTR).removeClass("DataGridRowMouseOverStyle"); if (My.LeftMenu != "") { My.MouseClickRowIndex = index; $('#' + My.LeftMenu, My.ParentElement).menu('show', { left: event.clientX, top: event.clientY }); return false; } OnRowClick(); }); } //多选行事件 if (My.SelectMode == nblf.ui.SelectMode.MultiRow) { //选择行事件 $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind("click", function () { var Selected = $(this).attr("Selected"); if (Selected == "false") { $(this).attr("Selected", "true"); $(this).addClass("DataGridSelectRowStyle"); } else { $(this).attr("Selected", "false"); $(this).removeClass("DataGridSelectRowStyle"); } if (My.LeftMenu != "") { var index = $(this).attr("index"); My.MouseClickRowIndex = index; $('#' + My.LeftMenu).menu('show', { left: event.clientX, top: event.clientY }); return false; } OnRowClick(); }); } //选择行背景变色 if (My.IsHoverColor == true) { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).hover(function () { if ($(this).attr("Selected") == "false") $(this).addClass("DataGridRowMouseOverStyle"); }, function () { if ($(this).attr("Selected") == "false") $(this).removeClass("DataGridRowMouseOverStyle"); }); } if (My.LeftMenu != "" && My.SelectMode != nblf.ui.SelectMode.SingleRow && My.SelectMode != nblf.ui.SelectMode.MultiRow) { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind('click', function () { $('#' + My.LeftMenu, My.ParentElement).menu('show', { left: event.clientX, top: event.clientY }); return false; }); } if (My.RightMenu != "") { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind('contextmenu', function (e) { // var index = $(this).attr("index"); // My.MouseClickRowIndex = index; $('#' + My.RightMenu, My.ParentElement).menu('show', { left: e.pageX, top: e.pageY }); return false; }); } } //#endregion //#region 绑定数据源 this.DataBind = function (source) { if (source == null) { Array.clear(My.DataSource); RefshDataSource(); //清除表头除外的行 //$("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).remove(); return; } if (source.__type == "Microsoft.Practices.EnterpriseLibrary.JavaDataTable") { JavaDataTable = source; Array.clear(My.DataSource); $(JavaDataTable.Rows).each(function () { var row = this; var model = new Object(); var ColIndex = 0; $(JavaDataTable.Columns).each(function () { model[this.ColumnName] = row.ItemArray[ColIndex]; ColIndex++; }); Array.add(My.DataSource, model); }); } else { My.DataSource = source; } RefshDataSource(); } //#endregion //#region 刷新数据源 function RefshDataSource() { if (My.PaperModel == 1) { My.DataPager.RowCount = My.DataSource.length; My.DataPager.MathPageNumber(); } if (My.IsFixHeader == true) { $("#" + My.id).html("
"); if (My.AllowPaging == true) CreatePage(); } var html = new Sys.StringBuilder(); html.append(""); CreateHeader(html); if (My.DataSource != null && My.DataSource.length > 0) CreateRows(html); html.append("
"); $("#" + My.DivTableID, My.ParentElement).html(html.toString()); //下拉框选择值 var ListDropDownList = $("#" + My.TableID, My.ParentElement).find("select[FieldValue]"); if (ListDropDownList.length > 0) { $(ListDropDownList).each(function () { var value = $(this).attr("FieldValue"); //数据源的值 if (value != "") { var options = $(this).find("option"); $(options).each(function () { if ($(this).val() == value) $(this).attr("selected", "selected"); }); } }); } if (My.SortExpression != "") { var th = $("#" + My.DivTableID + " th[SortExpression=" + My.SortExpression + "]", My.ParentElement); if (My.ViewSortDirection == "asc") th.append(""); if (My.ViewSortDirection == "desc") th.append(""); } //排序事件 $("#" + My.DivTableID + " th[SortExpression]", My.ParentElement).bind("click", function () { //去除 My.SortExpression = $(this).attr("SortExpression"); //当前排序字段名称 if (My.SortExpression == "" || My.SortExpression == undefined) return; if (My.ViewSortDirection == "asc") { My.ViewSortDirection = "desc"; } else { My.ViewSortDirection = "asc"; } OnSorting(); //引发排序事件 }); //滚动条事件 if (My.IsFixHeader == true) { var w = $("#" + My.id).width(); //if (My.Width != "") w = My.Width; $("#" + My.DivTableID).fixTable({ fixColumn: My.FixLeftColumns,//固定列数 width: w,//显示宽度 height: My.Height //显示高度 }); } //单选行事件 if (My.SelectMode == nblf.ui.SelectMode.SingleRow) { //选择行事件 $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind("click", function () { $(this).attr("Selected", "true"); $(this).addClass("DataGridSelectRowStyle"); var index = $(this).attr("index"); var SelectTR = $("#" + My.TableID + " tr[Selected='true']", My.ParentElement).not("[index='" + index + "']"); $(SelectTR).attr("Selected", "false"); $(SelectTR).removeClass("DataGridSelectRowStyle"); $(SelectTR).removeClass("DataGridRowMouseOverStyle"); if (My.LeftMenu != "") { My.MouseClickRowIndex = index; $('#' + My.LeftMenu, My.ParentElement).menu('show', { left: event.clientX, top: event.clientY }); return false; } OnRowClick(); }); } //多选行事件 if (My.SelectMode == nblf.ui.SelectMode.MultiRow) { //选择行事件 $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind("click", function () { var Selected = $(this).attr("Selected"); if (Selected == "false") { $(this).attr("Selected", "true"); $(this).addClass("DataGridSelectRowStyle"); } else { $(this).attr("Selected", "false"); $(this).removeClass("DataGridSelectRowStyle"); } if (My.LeftMenu != "") { var index = $(this).attr("index"); My.MouseClickRowIndex = index; $('#' + My.LeftMenu).menu('show', { left: event.clientX, top: event.clientY }); return false; } OnRowClick(); }); } //选择行背景变色 if (My.IsHoverColor == true) { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).hover(function () { if ($(this).attr("Selected") == "false") $(this).addClass("DataGridRowMouseOverStyle"); }, function () { if ($(this).attr("Selected") == "false") $(this).removeClass("DataGridRowMouseOverStyle"); }); } if (My.LeftMenu != "" && My.SelectMode != nblf.ui.SelectMode.SingleRow && My.SelectMode != nblf.ui.SelectMode.MultiRow) { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind('click', function () { $('#' + My.LeftMenu, My.ParentElement).menu('show', { left: event.clientX, top: event.clientY }); return false; }); } if (My.RightMenu != "") { $("#" + My.TableID + " tr[name='DataGridRow']", My.ParentElement).bind('contextmenu', function (e) { // var index = $(this).attr("index"); // My.MouseClickRowIndex = index; $('#' + My.RightMenu, My.ParentElement).menu('show', { left: e.pageX, top: e.pageY }); return false; }); } } //#endregion //#region 创建表头 function CreateHeader(html) { if (My.ShowHeader == false) return; html.append(""); //if (My.IsFixHeader == false) { html.append(""); } //else { html.append(""); } html.append(""); //初始化列表头 if (My.SelectMode == nblf.ui.SelectMode.RadioButton) { html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">"); } if (My.SelectMode == nblf.ui.SelectMode.CheckBox) { //显示多选列 html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">"); } if (My.ShowIndexColumn == true) { html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">序号"); } var index = 0; $.each(My.Columns, function (i, n) { style = "width:" + n.Width + ";"; if (this.SortExpression != "") style += "cursor:pointer;"; if (this.Align != "") style += "text-align: " + this.Align + ";"; html.append("" + n.HeaderText + ""); index++; }); html.append(""); html.append(""); } //#endregion //#region 创建所有行 function CreateRows(html) { html.append(""); if (My.PaperModel == 0 || My.AllowPaging == false) { var index = 0; $(My.DataSource).each(function () { CreateRow(html, this, index); index++; }); } else { var StartIndex = (My.DataPager.PageIndex - 1) * My.DataPager.PageSize; if (StartIndex == My.DataSource.length) { My.DataPager.SetPageIndex(My.DataPager.PageIndex - 1); My.DataPager.RowCount = My.DataSource.length; My.DataPager.MathPageNumber(); StartIndex -= My.DataPager.PageSize; } var StopIndex = StartIndex + My.DataPager.PageSize; if (My.DataSource.length < StopIndex) StopIndex = My.DataSource.length; for (var i = StartIndex; i < StopIndex; i++) { CreateRow(html, My.DataSource[i], i); } } html.append(""); return html; } //#endregion //#region 创建行 function CreateRow(html, model, index) { html.append(""); if (My.SelectMode == nblf.ui.SelectMode.RadioButton) { html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">"); } if (My.SelectMode == nblf.ui.SelectMode.CheckBox) { html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">"); } if (My.ShowIndexColumn == true) { html.append(" 0) html.append(" class='FixedColumnStyle'"); html.append(">" + (index + 1) + ""); } var temp = model; var index2 = 0; $(My.Columns).each(function () { style = ""; if (this.Align != "") style += "text-align: " + this.Align + ";"; if (this.Style != "") style += this.Style; if (this.Width != "") style += "width:" + this.Width + ";"; if (style != "") style = "style='" + style + "'"; var tr = new Sys.StringBuilder(); tr.append("" + controlHtml + ""); html.append(tr.toString()); }); html.append(""); } //#endregion //#region 创建分页UI function CreatePage() { if ($("#" + My.PageID, My.ParentElement).length > 0) $("#" + My.id, My.ParentElement).css("width", My.Width); $("#" + My.id, My.ParentElement).append("
"); My.DataPager.add_PageIndexChanged(function OnPageIndexChanged(sender, e) { if (My.PaperModel == 0) { var h = EventHandler.getHandler('PageIndexChanged'); if (h) h(My, Sys.EventArgs.Empty); } else { RefshDataSource(); //内存分页,刷新数据源 My.DataPager.MathPageNumber(); } }); My.DataPager.Init(); //初始化 } //#endregion //#region 取得表头 this.Get_Header = function () { return $("#" + My.TableID + " tr[name='DataGridHeader']", My.ParentElement); } //#endregion //#region 替换表头 this.ReplaceHeader = function (content) { $("#" + My.TableID + " tr[name='DataGridHeader']", My.ParentElement).replaceWith(content); } //#endregion //#region 内部更新数据源 function UpdateSource() { var rows; if (My.IsFixHeader == false) { rows = $("#" + My.TableID + ":first tr[name='DataGridRow']", My.ParentElement); } else { rows = $("#_fixTableMain tr[name='DataGridRow']", My.ParentElement); } $(rows).each(function () { var temp = this; //行对象 var index = parseInt($(temp).attr("index")); //行索引 $(My.Columns).each(function () { var controlHtml = this.CellTemplate; var HeaderText = this.HeaderText; var StringArray = controlHtml.match(new RegExp("\{Bind [^}]*\}", "ig")); if (StringArray != null) { for (var i = 0; i < StringArray.length; i++) { var ss = StringArray[i].substr(6, StringArray[i].length - 7).split(","); //分隔字符串 var ctrl = $(temp).find("[ColName=" + ss[0] + "]"); //数据源列关联的控件 if (ctrl.length == 0) continue; var tagName = $(ctrl).attr("tagName"); if (tagName == undefined) continue; tagName = tagName.toUpperCase(); if (tagName == "SELECT") break; var ctrlType = $(ctrl).attr("type"); //取得输入控件类型 if (ctrlType == "text" || ctrlType == "password") { //取得文本框的值,赋值给数据源 My.DataSource[index][ss[0]] = $(ctrl).val(); } if (ctrlType == "checkbox" || ctrlType == "radio") { My.DataSource[index][ss[0]] = $(ctrl)[0].checked; } if (ctrlType == "textarea") { My.DataSource[index][ss[0]] = $(ctrl).val(); } } } //这里处理下拉框 ListDropDownList = $(temp).find("select"); if (ListDropDownList.length > 0) { $(ListDropDownList).each(function () { var ColName = $(this).attr("ColName"); My.DataSource[index][ColName] = $(this).val(); }); } }); }); } //#endregion //#region 更新数据源 this.UpdateDataSource = function () { var rows; if (My.IsFixHeader == false) { rows = $("#" + My.TableID + ":first tr[name='DataGridRow']", My.ParentElement); } else { rows = $("#_fixTableMain tr[name='DataGridRow']", My.ParentElement); } var error = ""; $(rows).each(function () { var temp = this; //行对象 var index = parseInt($(temp).attr("index")); //行索引 $(My.Columns).each(function () { var controlHtml = this.CellTemplate; var HeaderText = this.HeaderText; var StringArray = controlHtml.match(new RegExp("\{Bind [^}]*\}", "ig")); if (StringArray != null) { for (var i = 0; i < StringArray.length; i++) { var ss = StringArray[i].substr(6, StringArray[i].length - 7).split(","); //分隔字符串 var ctrl = $(temp).find("[ColName=" + ss[0] + "]"); //数据源列关联的控件 if (ctrl.length == 0) continue; var tagName = $(ctrl).attr("tagName"); if (tagName == undefined) continue; tagName = tagName.toUpperCase(); if (tagName == "SELECT") break; var ctrlType = $(ctrl).attr("type"); //取得输入控件类型 var required = $(ctrl).attr("colrequired"); //取得是否不能为空 var validtype = $(ctrl).attr("validtype"); //取得验证方式 if (ctrlType == "text" || ctrlType == "password") { //取得文本框的值,赋值给数据源 My.DataSource[index][ss[0]] = $(ctrl).val(); } if (ctrlType == "checkbox" || ctrlType == "radio") { My.DataSource[index][ss[0]] = $(ctrl)[0].checked; } if (ctrlType == "textarea") { My.DataSource[index][ss[0]] = $(ctrl).val(); } if (required == "true" && My.DataSource[index][ss[0]] == "") { error = "第" + (index + 1) + "行" + HeaderText + "不能为空"; break; } if (validtype != undefined && My.DataSource[index][ss[0]] != "") { if (validtype == "date" && JqueryIsData(Model[ColName]) == false) { error = "第" + (index + 1) + "行" + HeaderText + "必须是日期格式,例2000-01-01"; break; } if (validtype == "email" && JqueryIsData(Model[ColName]) == false) { error = "第" + (index + 1) + "行" + HeaderText + "必须是邮箱格式,例XXX@163.com"; break; } if (validtype == "idcard" && JqueryIsIdentityCard(Model[ColName]) == false) { error = "第" + (index + 1) + "行" + HeaderText + "格式错误"; break; } if (validtype == "mobile" && JqueryIsPhone(Model[ColName]) == false) { error = "第" + (index + 1) + "行" + HeaderText + "格式错误"; break; } } } if (error != "") return false; } //这里处理下拉框 ListDropDownList = $(temp).find("select"); if (ListDropDownList.length > 0) { $(ListDropDownList).each(function () { var ColName = $(this).attr("ColName"); var required = $(this).attr("ColRequired"); My.DataSource[index][ColName] = $(this).val(); if (required == "true" && My.DataSource[index][ColName] == null) { error = "第" + (index + 1) + "行" + HeaderText + "不能为空"; return false; } }); } }); if (error != "") return false; }); return error; } //#endregion } nblf.ui.DataGrid.registerClass('nblf.ui.DataGrid', null); //分页事件 nblf.ui.PageIndexChangedEventargs = function (PageIndex, PageSize) { this.PageSize = PageSize; this.PageIndex = PageIndex; } nblf.ui.PageIndexChangedEventargs.registerClass('nblf.ui.PageIndexChangedEventargs', Sys.EventArgs); //绑定行事件 nblf.ui.DataGridRowEventargs = function (RowIndex) { this.RowIndex = RowIndex; } nblf.ui.DataGridRowEventargs.registerClass('nblf.ui.DataGridRowEventargs', Sys.EventArgs); //#region 绑定模板 function ReplaceTemplet(Element, Model) { var controlHtml = $(Element).html(); StringArray = controlHtml.match(new RegExp("\{Bind [^}]*\}", "ig")); if (StringArray != null) { for (var i = 0; i < StringArray.length; i++) { var ss = StringArray[i].substr(6, StringArray[i].length - 7).split(","); //分隔字符串 var value = Model[ss[0]]; //数据源的值 if (value == null) value = ""; if (ss.length == 1) { //不需要格式化 controlHtml = controlHtml.replace("{Bind " + ss[0] + "}", value) } else { if (value == "") { controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", ""); } else { var FormatValue = ""; if (ss[1] != "encode") { if (ss[1].length == 2 && ss[1].substr(0, 1) == "d") { FormatValue = parseFloat(value.localeFormat("n" + ss[1].substr(1, 1))).localeFormat("d"); } else { FormatValue = value.localeFormat(ss[1]); } } else { FormatValue = escape(value); } controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", FormatValue) } } } } controlHtml = controlHtml.replace(new RegExp("checked='false'", "ig"), ""); return controlHtml; } //#endregion function ToObject(JavaDataTable) { //转化对象 var ListModel = new Array(); $(JavaDataTable.Rows).each(function () { var row = this; var model = new Object(); var ColIndex = 0; $(JavaDataTable.Columns).each(function () { model[this.ColumnName] = row.ItemArray[ColIndex]; ColIndex++; }); Array.add(ListModel, model); }); return ListModel; } Date.prototype.addDays = function (d) { this.setDate(this.getDate() + d); return this; } Date.prototype.addWeeks = function (w) { this.addDays(w * 7); return this; } Date.prototype.addMonths = function (m) { var d = this.getDate(); this.setMonth(this.getMonth() + m); if (this.getDate() < d) { this.setDate(0); } return this; } Date.prototype.addYears = function (y) { var m = this.getMonth(); this.setFullYear(this.getFullYear() + y); if (m < this.getMonth()) { this.setDate(0); } return this; } Date.prototype.addSeconds = function (s) { this.setSeconds(this.getSeconds() + s); return this; } Date.prototype.addMinutes = function (s) { this.setMinutes(this.getMinutes() + s); return this; } Date.prototype.addHours = function (s) { this.setHours(this.getHours() + s); return this; } Date.prototype.clone = function (s) { var dt = new Date(); dt.setFullYear(this.getFullYear()); dt.setMonth(this.getMonth()); dt.setDate(this.getDate()); dt.setHours(this.getHours()); dt.setMinutes(this.getMinutes()); dt.setSeconds(this.getSeconds()); dt.setMilliseconds(this.getMilliseconds()); return dt; }