|
|
/// <reference path="../Scripts/MicrosoftAjax.js" />
|
|
|
/// <reference path="../Scripts/jquery.min.js" />
|
|
|
/// <reference path="../Scripts/jquery.easyui.min.js" />
|
|
|
/// <reference path="../Scripts/FixTable.js" />
|
|
|
/// <reference path="../Scripts/DataPager.js" />
|
|
|
|
|
|
|
|
|
|
|
|
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 = "<span ColName='" + FieldName + "' class='FieldSpan' style='width:100%;text-align: center;'>{Bind " + BindString + "}</span>";
|
|
|
}
|
|
|
//#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 = "<a ColName='" + FieldName + "' class='FieldHyperLink' target='" + target + "' href='" + url + "' >{Bind " + BindString + "}</a>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 图片列
|
|
|
this.CreateFieldImage = function (FieldName, height, width) {
|
|
|
this.CellTemplate = "<img alt='' style='height:" + height + ";width:" + width + ";' src='{Bind " + FieldName + "}'></img>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 数字输入列绑定用
|
|
|
this.CreateFieldNumberSpinner = function (FieldName, FormatString, min, max, increment) {
|
|
|
var BindString = FieldName;
|
|
|
if (FormatString != "") BindString += "," + FormatString;
|
|
|
this.CellTemplate = "<input class='easyui-numberspinner' style='width:100%;text-align: center;' ColName='" + FieldName + "' min='" + min + "' max=" + max + " increment=" + increment + " value='{Bind " + BindString + "}'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 数字输入列
|
|
|
this.CreateNumberSpinner = function (name, defaultValue, min, max, increment) {
|
|
|
this.CellTemplate = "<input name='" + name + "' style='width:100%;text-align: center;' min='" + min + "' max=" + max + " increment=" + increment + " class='easyui-numberspinner' value='" + defaultValue + "'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建文本框模板列
|
|
|
this.CreateFieldTextBox = function (FieldName, FormatString) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
var BindString = FieldName;
|
|
|
if (FormatString != "") BindString += "," + FormatString;
|
|
|
this.CellTemplate = "<input ColName='" + FieldName + "' class='FieldTextBox' type='text' style='width:100%;text-align: center;' value='{Bind " + BindString + "}'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建普通文本框列,带name属性,便于查找控件
|
|
|
this.CreateTextBox = function (name, defaultValue) {
|
|
|
this.CellTemplate = "<input type='text' name='" + name + "' class='TextBox' style='width:100%;text-align: center;' value='" + defaultValue + "'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建密码文本框模板列
|
|
|
this.CreateFieldPassWord = function (FieldName) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
this.CellTemplate = "<input ColName='" + FieldName + "' class='FieldPassWord' type='password' style='width:100%;text-align: center;' value='{Bind " + FieldName + "}'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建普通密码文本框列,带name属性,便于查找控件
|
|
|
this.CreateTextBox = function (name, defaultValue) {
|
|
|
this.CellTemplate = "<input type='password' name='" + name + "' class='PassWord' style='width:100%;text-align: center;' value='" + defaultValue + "'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建CheckBox模板列
|
|
|
this.CreateFieldCheckBox = function (FieldName, Enabled) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
var ss = "disabled";
|
|
|
if (Enabled == true) ss = "";
|
|
|
this.CellTemplate = "<input type='checkbox' ColName='" + FieldName + "' style='width:100%;text-align: center;' checked='{Bind " + FieldName + "}' " + ss + "></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建CheckBox
|
|
|
this.CreateCheckBox = function (name, defaultValue) {
|
|
|
this.CellTemplate = "<input type='checkbox' name='" + name + "' style='width:100%;text-align: center;' checked='" + defaultValue + "'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建radio模板列
|
|
|
this.CreateFieldRadio = function (FieldName) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
this.CellTemplate = "<input ColName='" + FieldName + "' type='radio' style='width:100%;text-align: center;' checked='{Bind " + FieldName + "}' ></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建radio
|
|
|
this.CreateRadio = function (name, defaultValue) {
|
|
|
this.CellTemplate = "<input type='radio' name='" + name + "' style='width:100%;text-align: center;' checked='" + defaultValue + "'></input>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建textarea模板列
|
|
|
this.CreateFieldMultTextBox = function (FieldName, height) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
this.CellTemplate = "<textarea ColName='" + FieldName + "' style='width:100%;height:" + height + ";' >{Bind " + FieldName + "}</textarea>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建textarea模板列
|
|
|
this.CreateMultiTextBox = function (name, defaultValue, height) {
|
|
|
this.CellTemplate = "<textarea name='" + name + "' style='width:100%;height:" + height + ";' >" + defaultValue + "</textarea>";
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 创建select下拉框列ListArray必须是一个数组对象拥有二个属性,text和value
|
|
|
this.CreateFieldDropDownList = function (FieldName, FieldValue, ListArray) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
this.CellTemplate = "<select ColName='" + FieldName + "' FieldValue='{Bind " + FieldValue + "}' style='width:100%;' >";
|
|
|
for (var i = 0; i < ListArray.length; i++) {
|
|
|
this.CellTemplate += "<option value='" + ListArray[i].value + "'>" + ListArray[i].text + "</option>";
|
|
|
}
|
|
|
this.CellTemplate += "</select>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建select下拉框列ListArray必须是一个数组对象拥有二个属性,text和value
|
|
|
this.CreateFieldDropDownList2 = function (FieldName, FieldValue, ListArray) {
|
|
|
// Array.add(this.DataField,FieldName);
|
|
|
this.CellTemplate = "<select ColName='" + FieldName + "' FieldValue='{Bind " + FieldValue + "}' style='width:100%;' >";
|
|
|
for (var i = 0; i < ListArray.length; i++) {
|
|
|
this.CellTemplate += "<option value='" + ListArray[i].ID + "'>" + ListArray[i].Name + "</option>";
|
|
|
}
|
|
|
this.CellTemplate += "</select>";
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建select下拉框列
|
|
|
this.CreateDropDownList = function (name, ListArray) {
|
|
|
this.CellTemplate = "<select name='" + name + "' style='width:100%;' >";
|
|
|
for (var i = 0; i < ListArray.length; i++) {
|
|
|
this.CellTemplate += "<option value='" + ListArray[i].value + "'>" + ListArray[i].text + "</option>";
|
|
|
}
|
|
|
this.CellTemplate += "</select>";
|
|
|
}
|
|
|
//#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.NavigationRow = function () {
|
|
|
var fixtable;
|
|
|
if (My.IsFixHeader == false) {
|
|
|
fixtable = $("#" + My.TableID, My.ParentElement);
|
|
|
} else {
|
|
|
fixtable = $("#_fixTableMain", My.ParentElement);
|
|
|
}
|
|
|
var rows = fixtable.find("tr[name='DataGridRow']");
|
|
|
if (rows.length == 0) return;
|
|
|
var tabindex = 1;
|
|
|
$(rows).each(function () {
|
|
|
$(this).find(":text:enabled[IsTab!='false']").each(function () {
|
|
|
$(this).attr("tabindex", tabindex);
|
|
|
tabindex++;
|
|
|
});
|
|
|
});
|
|
|
fixtable.find(":text:enabled[IsTab!='false']", My.ParentElement).keydown(function (event) {
|
|
|
var tabindex = parseInt($(this).attr("tabindex"));
|
|
|
if (event.keyCode == 13) {
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex + 1) + "']");
|
|
|
if (textbox.length > 0) {
|
|
|
textbox.focus();
|
|
|
}
|
|
|
else {
|
|
|
OnTabFocusEnd();
|
|
|
}
|
|
|
}
|
|
|
else if (event.keyCode == 37) {
|
|
|
//左
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
tr.find(":text:enabled[IsTab!='false']").each(function () {
|
|
|
var tabindex2 = parseInt($(this).attr("tabindex"));
|
|
|
if (tabindex2 == tabindex - 1) $(this).focus();
|
|
|
});
|
|
|
}
|
|
|
else if (event.keyCode == 38) {
|
|
|
//上
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
var len = tr.find(":text[IsTab!='false']").length;
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex - len) + "']");
|
|
|
if (textbox.length > 0) textbox.focus();
|
|
|
}
|
|
|
else if (event.keyCode == 39) {
|
|
|
//右
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
tr.find(":text:enabled[IsTab!='false']").each(function () {
|
|
|
var tabindex2 = parseInt($(this).attr("tabindex"));
|
|
|
if (tabindex2 == tabindex + 1) $(this).focus();
|
|
|
});
|
|
|
}
|
|
|
else if (event.keyCode == 40) {
|
|
|
//下
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
var len = tr.find(":text:enabled[IsTab!='false']").length;
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex + len) + "']");
|
|
|
if (textbox.length > 0) textbox.focus();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 按列焦点导航
|
|
|
this.NavigationCol = function () {
|
|
|
var fixtable;
|
|
|
if (My.IsFixHeader == false) {
|
|
|
fixtable = $("#" + My.TableID, My.ParentElement);
|
|
|
} else {
|
|
|
fixtable = $("#_fixTableMain", My.ParentElement);
|
|
|
}
|
|
|
var rows = fixtable.find("tr[name='DataGridRow']");
|
|
|
if (rows.length == 0) return;
|
|
|
$(rows).each(function (rowIndex) {
|
|
|
$(this).find(":text:enabled[IsTab!='false']").each(function (i) {
|
|
|
$(this).attr("tabindex", i * rows.length + rowIndex + 1);
|
|
|
});
|
|
|
});
|
|
|
fixtable.find(":text").keydown(function (event) {
|
|
|
var tabindex = parseInt($(this).attr("tabindex"));
|
|
|
if (event.keyCode == 13) {
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex + 1) + "']");
|
|
|
if (textbox.length > 0) {
|
|
|
textbox.focus();
|
|
|
}
|
|
|
else {
|
|
|
OnTabFocusEnd();
|
|
|
}
|
|
|
}
|
|
|
else if (event.keyCode == 37) {
|
|
|
//左
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
tr.find(":text:enabled[IsTab!='false']").each(function () {
|
|
|
var tabindex2 = parseInt($(this).attr("tabindex"));
|
|
|
if (tabindex2 == tabindex - rows.length) $(this).focus();
|
|
|
});
|
|
|
}
|
|
|
else if (event.keyCode == 38) {
|
|
|
//上
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex - 1) + "']");
|
|
|
if (textbox.length > 0) textbox.focus();
|
|
|
}
|
|
|
else if (event.keyCode == 39) {
|
|
|
//右
|
|
|
var tr = $(this).parentsUntil("tr").parent();
|
|
|
tr.find(":text:enabled[IsTab!='false']").each(function () {
|
|
|
var tabindex2 = parseInt($(this).attr("tabindex"));
|
|
|
if (tabindex2 == tabindex + rows.length) $(this).focus();
|
|
|
});
|
|
|
}
|
|
|
else if (event.keyCode == 40) {
|
|
|
//下
|
|
|
var textbox = fixtable.find(":text[tabindex='" + (tabindex + 1) + "']");
|
|
|
if (textbox.length > 0) textbox.focus();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 获取所有行
|
|
|
this.Get_Rows = function () {
|
|
|
var fixtable;
|
|
|
if (My.IsFixHeader == false) {
|
|
|
fixtable = $("#" + My.TableID, My.ParentElement);
|
|
|
} else {
|
|
|
fixtable = $("#_fixTableMain", My.ParentElement);
|
|
|
}
|
|
|
var rows = fixtable.find("tr[name='DataGridRow']");
|
|
|
return rows;
|
|
|
}
|
|
|
//#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 () {
|
|
|
if (this.DataPager.PageIndex > 1) {
|
|
|
if (this.DataPager.PagerFlag == false) {
|
|
|
this.DataPager.SetPageIndex(1);
|
|
|
}
|
|
|
}
|
|
|
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.PagerFlag = false;
|
|
|
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) {
|
|
|
try {
|
|
|
My.DataPager.SetPageSize(PageSize);
|
|
|
} catch (e) {
|
|
|
My.DataPager.PageSize = PageSize;
|
|
|
}
|
|
|
}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 焦点回车健导行结束时触发
|
|
|
this.add_TabFocusEnd = function (handler) {
|
|
|
EventHandler.addHandler('TabFocusEnd', handler);
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 引发点击行事件
|
|
|
function OnTabFocusEnd() {
|
|
|
var h = EventHandler.getHandler('TabFocusEnd');
|
|
|
if (h) h(this, Sys.EventArgs.Empty);
|
|
|
}
|
|
|
//#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;
|
|
|
$("#" + My.id, My.ParentElement).html("");
|
|
|
if (My.ListSorting.length > 0) {
|
|
|
$("<div id='" + My.SortingID + "'><input class='easyui-combobox' editable='false' style='width:150px;' /><input id='Radio_Asc' type='radio' name='Sorting' value='asc' checked='true' /><span>升序</span><input id='Radio_Desc' type='radio' name='Sorting' value='desc' /><span>降序</span></div>").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) {
|
|
|
// $("<div id='" + My.DivTableID + "' style=\"overflow: auto;width:" + My.Width + ";height:" + My.Height + ";\"></div>").appendTo($("#" + My.id, My.ParentElement));
|
|
|
//}
|
|
|
//else {
|
|
|
$("<div id='" + My.DivTableID + "' style=\"width:" + My.Width + ";height:" + My.Height + ";\"></div>").appendTo($("#" + My.id, My.ParentElement));
|
|
|
//}
|
|
|
if (My.AllowPaging == true) CreatePage();
|
|
|
if (My.Columns.length > 0) {
|
|
|
var html = new Sys.StringBuilder();
|
|
|
html.append("<table id='" + My.TableID + "' class='DataGridTableStyle' style='width:" + My.TableWidth + ";'>");
|
|
|
CreateHeader(html);
|
|
|
html.append("</table>");
|
|
|
$("#" + 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("<span class='DataGrid_Sort_Asc' />");
|
|
|
if (My.ViewSortDirection == "desc") th.append("<span class='DataGrid_Sort_Desc' />");
|
|
|
}
|
|
|
|
|
|
//排序事件
|
|
|
$("#" + 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("<div id='" + My.DivTableID + "' style=\"width:" + My.Width + ";height:" + My.Height + ";\"></div>");
|
|
|
if (My.AllowPaging == true) CreatePage();
|
|
|
}
|
|
|
var html = new Sys.StringBuilder();
|
|
|
html.append("<table id='" + My.TableID + "' class='DataGridTableStyle' style='width:" + My.TableWidth + ";'>");
|
|
|
CreateHeader(html);
|
|
|
if (My.DataSource != null && My.DataSource.length > 0) CreateRows(html);
|
|
|
html.append("</table>");
|
|
|
$("#" + 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("<span class='DataGrid_Sort_Asc' />");
|
|
|
if (My.ViewSortDirection == "desc") th.append("<span class='DataGrid_Sort_Desc' />");
|
|
|
}
|
|
|
|
|
|
//排序事件
|
|
|
$("#" + 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 (w == 0) w = My.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("<thead>");
|
|
|
//if (My.IsFixHeader == false) { html.append("<tr name='DataGridHeader' class='HeaderStyle'>"); }
|
|
|
//else { html.append("<tr name='DataGridHeader' class='FixedHeaderStyle'>"); }
|
|
|
html.append("<tr name='DataGridHeader' class='HeaderStyle'>");
|
|
|
//初始化列表头
|
|
|
if (My.SelectMode == nblf.ui.SelectMode.RadioButton) {
|
|
|
html.append("<th style='width:30px'"); //显示单选列
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append("></th>");
|
|
|
}
|
|
|
if (My.SelectMode == nblf.ui.SelectMode.CheckBox) {
|
|
|
//显示多选列
|
|
|
html.append("<th style='width:30px'"); //显示多选列
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append("><input id='" + My.TableID + "_SelectAll' type='checkbox' onclick=\"$(\'#" + My.id + " input[name=SelectCheckBox]\').attr('checked', this.checked);\"></input></th>");
|
|
|
}
|
|
|
if (My.ShowIndexColumn == true) {
|
|
|
html.append("<th style='width:30px'"); //显示序号列
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append(">序号</th>");
|
|
|
}
|
|
|
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("<th SortExpression='" + this.SortExpression + "' style='" + style + "'");
|
|
|
if (index < My.FixLeftColumns) html.append(" class='FixedColumnStyle'");
|
|
|
html.append(">" + n.HeaderText + "</th>");
|
|
|
index++;
|
|
|
});
|
|
|
html.append("</tr>");
|
|
|
html.append("</thead>");
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建所有行
|
|
|
function CreateRows(html) {
|
|
|
html.append("<tbody>");
|
|
|
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("</tbody>");
|
|
|
return html;
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 创建行
|
|
|
function CreateRow(html, model, index) {
|
|
|
html.append("<tr name='DataGridRow' index='" + index + "' class='DataGridRowStyle' Selected='false'>");
|
|
|
if (My.SelectMode == nblf.ui.SelectMode.RadioButton) {
|
|
|
html.append("<td");
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append("><input type='radio' name='SelectRadioButton' /></td>");
|
|
|
}
|
|
|
if (My.SelectMode == nblf.ui.SelectMode.CheckBox) {
|
|
|
html.append("<td");
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append("><input type='checkbox' name='SelectCheckBox' /></td>");
|
|
|
}
|
|
|
if (My.ShowIndexColumn == true) {
|
|
|
html.append("<td");
|
|
|
if (My.FixLeftColumns > 0) html.append(" class='FixedColumnStyle'");
|
|
|
html.append(">" + (index + 1) + "</td>");
|
|
|
}
|
|
|
|
|
|
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("<td " + style);
|
|
|
|
|
|
if (index2 < My.FixLeftColumns) tr.append(" class='FixedColumnStyle'");
|
|
|
index2++;
|
|
|
var controlHtml = this.CellTemplate;
|
|
|
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 = temp[ss[0]]; //数据源的值
|
|
|
if (value == null) value = "";
|
|
|
if (this.CellFormatter)
|
|
|
value = this.CellFormatter(value, temp);
|
|
|
if (ss.length == 1) {
|
|
|
//不需要格式化
|
|
|
controlHtml = controlHtml.replace("{Bind " + ss[0] + "}", value)
|
|
|
}
|
|
|
else {
|
|
|
if (value == "") {
|
|
|
controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", value);
|
|
|
}
|
|
|
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 = FormatWeek(value, ss[1]); }
|
|
|
}
|
|
|
else {
|
|
|
FormatValue = escape(value);
|
|
|
}
|
|
|
controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", FormatValue)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
controlHtml = controlHtml.replace(new RegExp("checked='false'", "ig"), "");
|
|
|
controlHtml = controlHtml.replace(new RegExp("checked=''", "ig"), "");
|
|
|
tr.append(">" + controlHtml + "</td>");
|
|
|
|
|
|
html.append(tr.toString());
|
|
|
});
|
|
|
|
|
|
|
|
|
html.append("</tr>");
|
|
|
}
|
|
|
//#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("<div id='" + My.PageID + "' style='width:100%;'></div>");
|
|
|
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 || tagName == "SELECT") {
|
|
|
//这里处理下拉框
|
|
|
ListDropDownList = ctrl;
|
|
|
if (ListDropDownList.length > 0) {
|
|
|
$(ListDropDownList).each(function () {
|
|
|
var ColName = $(this).attr("ColName");
|
|
|
var required = $(this).attr("ColRequired");
|
|
|
My.DataSource[index][ColName] = $(this).val();
|
|
|
if (My.DataSource[index][ColName] == null) My.DataSource[index][ColName] = "";
|
|
|
if (My.DataSource[index][ColName] == "-1") My.DataSource[index][ColName] = "";
|
|
|
if (My.DataSource[index][ColName] == "-9999") My.DataSource[index][ColName] = "";
|
|
|
if (required == "true" && My.DataSource[index][ColName] == "") {
|
|
|
error = "第" + (index + 1) + "行" + HeaderText + "不能为空";
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
});
|
|
|
if (error != "") return false;
|
|
|
});
|
|
|
return error;
|
|
|
}
|
|
|
//#endregion
|
|
|
//#region 格式化星期
|
|
|
function FormatWeek(cDate, FormatValue) {
|
|
|
if (cDate == null || cDate == undefined) return "";
|
|
|
var index = FormatValue.indexOf("W");
|
|
|
var CurrentDate = cDate.localeFormat(FormatValue);
|
|
|
if (index >= 0) {
|
|
|
var week;
|
|
|
switch (cDate.getDay()) {
|
|
|
case 0: week = "日";
|
|
|
break;
|
|
|
case 1: week = "一";
|
|
|
break;
|
|
|
case 2: week = "二";
|
|
|
break;
|
|
|
case 3: week = "三";
|
|
|
break;
|
|
|
case 4: week = "四";
|
|
|
break;
|
|
|
case 5: week = "五";
|
|
|
break;
|
|
|
case 6: week = "六";
|
|
|
break;
|
|
|
}
|
|
|
CurrentDate = CurrentDate.replace("W", week);
|
|
|
}
|
|
|
return CurrentDate;
|
|
|
}
|
|
|
//#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;
|
|
|
} |