///
///
///
///
///
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("");
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;
}