function
queryGrid(dg) { //查詢後添加固定條件
if ($(dg).attr('id') == 'dataGridMaster') {
var where = $(dg).datagrid('getWhere');
if (where.length 》 0) {
where = where.replace("myint", "Convert(
decimal(10,0),nullif(datestring,''))"); //這個地方您可以自行使用其他的方法修改一下組好的where語句
}
$(dg).datagrid('setWhere', where);
}
}
JQuery的查詢如果有比如需要添加自定義查詢條件,或者修改掉已經組好的where條件,比如欄位增加上table的名字,或者對一個as出來的虛擬欄位做查詢等,都可以通過如下方法實現:
在QueryFields中定義您需要處理的欄位名字,然後定義一個queryGrid的js方法,就可以實現。js方法如下:
function queryGrid(dg) { //查詢后添加固定條件
if ($(dg).attr('id') == 'dataGridMaster') {
var where = $(dg).datagrid('getWhere');
if (where.length > 0) {
where = where.replace("myint", "Convert(
decimal(10,0),nullif(datestring,''))"); //這個地方您可以自行使用其他的方法修改一下組好的where語句
}
$(dg).datagrid('setWhere', where);
}
}
範例程式如下:
$(document).ready(function () {
$("input", "#querydataGridView").each(function () {
$(this).live('keypress', function (e) {
var p = e.which;
if (p == 13) {
var where = $("#dataGridView").datagrid('getWhere');
$("#dataGridView").datagrid('setWhere', where);
$("#querydataGridView").window('close'); //查詢視窗關閉
}
});
});
combobox的onselect寫程式:
function queryCombox(row) {
$('#OrderDate_Query').closest('td').prev('td').html('aaa');
}
在JQDataForm 的 OnloadSuccess() 事件加入
var inputCOD_CUST = $("#dataFormMasterCOD_CUST");
var button = '<a href="javascript: popCOD_CUST();" id="qryBtn"><img src="../js/themes/icons/Select.png" style="border:none"></a>';
inputCOD_CUST._outerWidth(parseInt(inputCOD_CUST.css('width')) - 20);
inputCOD_CUST.after(button);
dataForm上各欄位元件的id就是dataFormMaster+欄位名稱
$('#id').combobox('disable');
$('#id').datebox('disable');
$('#id').attr('disabled', true); //textbox
$('#id').refval('disable');
DataForm編輯,新增一筆後(有自動編號),在DataGrid撈出新增那筆
-->
在DataForm的onApplied事件,寫JS即可。
function
autonum1(rows) {
var
CustomerID = "";
if
(rows) {
CustomerID
= rows[0].CustomerID; //取出自動編號值
}
$("#dataGridView").datagrid('setWhere',
"CustomerID='" + CustomerID + "'");
}
openForm('#JQDialog2',
rowData, "inserted", 'dialog');
rowData是當前選擇的dataGrid的row,新增傳null進去就可以。
如果只是瀏覽的話,可以在dialog放tabs,放多個dataForm。然後在某一個dataForm的onloadSucess寫一個方法:
var opt = $('#JQDialog1').attr('infolight-options');
var opt1 = option.replace('#dataFormMaster',
'#dataFormMaster0');
$('#JQDialog1').attr('infolight-options', opt1);
openForm('#JQDialog1',$('#dataGridView').datagrid('getSelected')
, 'viewed', '');
$('#JQDialog1').attr('infolight-options', opt);
function
seqno_onblur() {
if
($("#dataFormMasterseq_no").attr('readonly')==true) {
//return
alert('readonly');
};}
1. 用Wizard建立一個JQuerySingle2樣板的表單。
2. DataForm屬性AlwaysReadOnly=True。
2. JQDialog的EditMode屬性設為 Continue模式。
3. DataForm上ToolItems?性設置
<JQTools:JQToolItem Icon="icon-previous" OnClick="previous" Text="上筆"/>
<JQTools:JQToolItem Icon="icon-next" OnClick="next" Text="下筆"/>
<JQTools:JQToolItem Icon="icon-add" OnClick="insert" Text="新增"/>
<JQTools:JQToolItem Icon="icon-edit" OnClick="update" Text="更改"/>
<JQTools:JQToolItem Icon="icon-remove" OnClick="remove" Text="?除"/>
<JQTools:JQToolItem Icon="icon-search " OnClick= "query" Text= "查詢"/>
4. 查詢欄位仍須設置在DataGrid的QueryColumns屬性上。
方式1.
$('<br/><span id="t1" style=\"color:Red\" >您要顯示的內容</span>').insertAfter($('#dataFormMasterShipVia', '#dataFormMaster'));
方式2.
利用某個不用的欄位,然後在form的onloadsuccess的時候,將這個欄位隱藏,就會保留欄位前面的Caption文字說明。
var
a;
a = window.open("../test/tst/list.rar", "_blank",
"width=0, height=0,status=0");
a.document.execCommand("SaveAs");
open方法是開啟這個文件,如果是圖片或者txt等瀏覽器支援的文件格式,就會直接開啟,如果是不支援的比如rar文件,就會提示下載。
$("#dataGridMaster").datagrid('showColumn',
'CustomerID'); //顯示欄位
$("#dataGridMaster").datagrid('hideColumn', 'CustomerID'); //隱藏欄位
$(document).ready(function () {
$("#dataGridDetail").datagrid({
onAfterEdit: function (rowIndex, rowData, changes) {
rowData.Amount = rowData.UnitPrice * rowData.Quantity;
$(this).datagrid('refreshRow', rowIndex);
}})});
//加總至Master欄位。DataGridDetail Amount欄位Total屬性設定sum、OnTotal屬性定義此方法
function mytotal(rowData) {
$('#dataFormMasterTotalAmt').val(rowData.Amount);
}
//DataFormMaster的OnApply屬性定義此方法
function formApply() {
endEdit($('#dataGridDetail'));
}
var datagrid = $('#JQDataGrid1')
var editIndex = getEditIndex(datagrid);
var editor = datagrid.datagrid('getEditor', { index: editIndex, field: 'LastOrdDate' }); //取LastOrdDate欄位
var valto = editor.actions.getValue(editor.target); //取值
editor.actions.setValue(editor.target, 某值);//給值
[1]在 InfoCommon 的 SQL 增加一個虛擬欄位
ex: Select '' AS ckBox From Customers
[2] 在JQDataGrid最前面加入ckBox虛擬欄位並在formatscript屬性設定一個Javascript 的函式名稱,ex: ckBoxFormater
[3] 實作 Javascript 函式
function ckBoxFormater(value,row,index)
{
return '<input type="button" value="'+ value +'" onclick="myClick()"/>';
}
1. 在JQWebClient\js\jquery.infolight.js文件中查找exportGrid方法。
2. 在方法的:
var option = $(dgid).datagrid('getColumnOption', field);
程式下,增加一個if程式:
if (!option.hidden) {
3. 這個if一直到:
columns.push(column);
下,整個包起來。
1.combobox連動:
在第一個combo的OnSelect上定義方法
function filterCity() {
var val = $(this).combobox("getValue");
var row = $('#dataGridMaster').datagrid('getSelected');
var rowIndex = $('#dataGridMaster').datagrid('getRowIndex', row);
var editor = $('#dataGridMaster').datagrid('getEditor', { index: rowIndex, field: 'ShipCity' });
var combo = editor.target;
combo.combobox('setWhere', "CountryID = '" + val + "'");
}
//上面有元件、欄位名稱請自行替換為自己的。
2.combobox過濾:
OnBeforeLoad屬性上定義方法
function comboBeforeLoad(param) {
var queryWord = new Object();
queryWord.whereString = "where 條件";
param.queryWord = $.toJSONString(queryWord);
}
[1]如果能在 .cs 判斷條件的話,在 Page_Load() 事件加入
JQDataGrid1.AllowAdd = false; //不允許新增
[2]若在前端才能判斷,就還是透過 Javascript code
$('#toolItemdataGridView新增').hide() 將新增按鈕隱藏
跟 OnBeforeInsert() 、OnInsert() 事件來控制
var row = new Object();
row['fieldname'] = strarray[i];
......
$('#dataGridDetail').datagrid('appendRow', row);
自行增加一個刪除鈕,裡面寫JS程式,比如:
var rows = $("#dataGridDetail").datagrid('getChecked');
for (var i = rows.length - 1 ; i >= 0 ; i--) {
var index = $('#dataGridDetail').datagrid('getRowIndex', rows[i]);
$('#dataGridDetail').datagrid('deleteRow', index);
apply($('#dataGridMaster'));
}
//dataGrid的Column的formatScript屬性,定義一個自定義方法,比如wrapText。然後在aspx中定義該方法,如下:
function wrapText(value) {
return "<p style='margin:0px;word-wrap:break-word;white-space:
normal'>" + value + "</p>";
}
var datagrid = $('#dataGridMaster');
var rowIndex =
$("#dataGridMaster").datagrid("getRowIndex",
$("#dataGridMaster").datagrid("getSelected"));
var field = 'CustomerID';
var row = datagrid.datagrid('getPanel').find('.datagrid-view1
.datagrid-body').find('tr[datagrid-row-index="' + rowIndex + '"]');
var value = row.find('td[field="' + field +
'"]>.datagrid-cell').html();
alert(value);
$(dialoggrid).datagrid('beginEdit',
index);
var editor =
$(dialoggrid).datagrid('getEditor', { index: index, field: field });
if (editor) {
editor.actions.setValue(editor.target,
row[field]);
}
$(dialoggrid).datagrid('endEdit',
index);
var rows =
$("#dataGridDetail").datagrid('getRows');
var cnt = rows.length;
for (var i = cnt - 1 ; i >= 0 ;
i--) {
$('#dataGridDetail').datagrid('deleteRow',
0);
}
dataGrid無法通過js來控制readonly,如果是要控制輸入項,您可以參考:
//修改時,欄位不可編輯。寫在DataGrid onUpdate事件
function UpdateTest() {
var row = $(dgid).datagrid('getSelected');
var index = $(dgid).datagrid('getRowIndex', row);
var editIndex = undefined;
if (editIndex != index) {
$(dgid).datagrid('selectRow', index).datagrid('beginEdit', index);
var cellEdit = $(dgid).datagrid('getEditor', { index: index, field: 'FieldName' });
$(cellEdit.target).attr("disabled", "disabled"); //text
//$(cellEdit.target).combobox('disable'); //combobox
//$(cellEdit.target).datebox({ disabled: true }); //datebox
//$(cellEdit.target).refval('disable'); //refval
}
}
//新增時,欄位不可編輯。在DataGrid toolItem新增一個按鈕
function InsertTest() {
var index = $(dgid).datagrid('getRows').length;
insertItem(dgid, "$(this)"); //--新增空白一筆記錄
var editIndex = undefined;
if (editIndex != index) {
$(dgid).datagrid('selectRow', index).datagrid('beginEdit', index);
var cellEdit = $(dgid).datagrid('getEditor', { index: index, field: 'FieldName' });;
$(cellEdit.target).attr("disabled", "disabled"); //text
//$(cellEdit.target).combobox('disable'); //combobox
//$(cellEdit.target).datebox({ disabled: true }); //datebox
//$(cellEdit.target).refval('disable'); //refval
}
}
$('#dataGridMaster').datagrid({
//設定datagrid的row的背景色
rowStyler: function (index, row) {
if (row.FieldName ==
"value") {
return
'background-color:#6293BB;color:#fff;';
}
else {
return
'background-color:red;color:black;';
}}
});
color是字體顏色,如果不需要設定,可以不設。
網頁增加如下程式中script中。
$(document).ready(function () {
$('#toolItemdataGridMaster查詢').attr('title','我的查詢');
$('#toolItemdataGridMaster查詢').find('.l-btn-text').mouseover(function()
{
$(this).addClass('overtext');
});
$('#toolItemdataGridMaster查詢').find('.l-btn-text').mouseout(function()
{ $(this).removeClass('overtext');
});
})
其中:
“toolItemdataGridMaster查詢”是我的button的id,可以瀏覽網頁,檢查元件查找元件的id,並替換到上述程式中。
另外,需要增加一部分內容到style項中:
<style>
.overtext
{
color: #00ff00;
}
</style>
顏色請自行調整。
可以用一個變通的方法,隨便找一個text欄位,定義formatscript,定義一個js方法,方法的程式:
return "<p
style='margin:0px;word-wrap:break-word;white-space: normal;
height:50px'>" + value + "</p>";
<style>
.datagrid-btable:nth-child(even){
background-color:azure;
}
</style>
if (需要設成多選方式) {
$('#dataFormMasterShipAddress').attr('infolight-options', $('#dataFormMasterShipAddress').attr('infolight-options').replace('multiSelect:false', 'multiSelect:true'));
}
else {
$('#dataFormMasterShipAddress').attr('infolight-options', $('#dataFormMasterShipAddress').attr('infolight-options').replace('multiSelect:true', 'multiSelect:false'));
}
$('#dataFormMasterShipAddress').options('initializePanel');
dataFormMasterShipAddress是元件id,請注意修改。
可參考jquery.infolight.js 搜尋getvalue setvalue
//TextBox的抓法
var NextStep = $('#dataFormMasterNextStep').val();
//RefVal的抓法 抓ValueMember
var NextStep = $('#dataFormMasterNextStep').refval('getValue');
//RefVal的抓法, 抓DisplayMember
var NextStep = $('#dataFormMasterNextStep').refval('selectItem').text;
//combobox的抓法
var NextStep = $('#dataFormMasterNextStep').combobox('getValue');
//CheckBox的抓法
$('#dataFormMasterNextStep').checkbox('getValue')
//ComboGrid的抓法
$('#dataFormMasterNextStep').combogrid('getValue')
//DateTimeBox的抓法
$('#dataFormMasterNextStep').datetimebox('getValue')
//Options的抓法
$('#dataFormMasterNextStep').options('getValue')
//combobox塞值
$('#dataFormMasterNextStep').combobox('setValue');
var optionspanel = $('#dataFormMasterBitFlag').data("infooptions").panel;
$(":radio,:checkbox", optionspanel).click(function () {
alert($(this).is(":checked"));
});
範例中dataFormMasterBitFlag是元件id,alert的內容是true/false
如果是editor是Checkbox的話,請使用如下方法:
$('#dataFormMasterBitFlag').click(function () {
alert($(this).is(":checked"));
});
可以寫在form的onloadsuccess。
var infofileUpload = $('#dataFormMasterShipCity');
var infofileUploadvalue = $('.info-fileUpload-value', infofileUpload.next())
var infofileUploadfile = $('.info-fileUpload-file', infofileUpload.next())
infofileUploadvalue.val()是文件名。
infofileUploadfile.val()是完整路徑。
dataForm和dataGrid在render的時候,會讀取column的format設定。如果是要寫一個特定的例子的話,可以考慮改在JQClientTools下的兩個cs程式中。判斷如果format為空白,或者某個特定值,則將其改為您實際需要的值。
比如JQDataForm.cs的JQFormColumn的Render方法查找:
else if (Editor ==
JQEditorControl.DateBox)
在其下改寫:
if (string.IsNullOrEmpty(Format))
Format = "yyyy-mm-dd
HH:mm:SS";
function changeTitle() {
var tab =
$('#tt').tabs('getSelected'); // get selected panel
$('#tt').tabs('update', {
tab: tab,
options: {
title: 'New Title',
}
});
}
var easyuiTabDIV = $('#Div1');
var tabs =
easyuiTabDIV.tabs('tabs');
easyuiTabDIV.tabs('select',
tabs[1].panel('options').title);
在元件的onsuccess事件定義一個方法名字,程式如下:
function fileuploadsuccess(value)
{
$('#JQFileUpload1').next().remove()
initInfoFileUpload($('#JQFileUpload1'));
}
dataFormID為所在JQDataFormID,uploadColumn為對應欄位名。
var fileUpload = $("#infoFileUpload" + dataFormID + uploadColumn);
fileUpload.attr('isalsoreadonly', true);
$(fid).window('move', {
left: dialogLeft,
top: dialogTop
});
dialogLeft和dialogTop是具體的設定內容。
//以X軸為年月,Y軸為百分比為例
var percent = [];//ex: ['20','50','70'']
var yearmonth = [];//ex: ['201701','201702'','201703']
//PLOT的ID,以LineChart為例
var plot1 = $.jqplot('JQLineChart1', [percent],//百分比 {
title: 'TAT Target', //PLOT的Title
seriesDefaults: {
pointLabels: { show: true }
},
axes: {
xaxis: {//X軸
renderer:
$.jqplot.CategoryAxisRenderer,
ticks: yearmonth //年月
},
yaxis: {//Y軸
min: 0, //刻度最小值
max: 100, //刻度最大值
}
}
});
plot1.replot();//重製圖表
在MainPage.js文件中有一個addTab方法,在其中增加程式處理,增加的位置:
if (mainTab.length == 0) {
mainTab = $("#tabsWorkFlow")
}
的下方。增加的內容:
if (mainTab.tabs('tabs').length > 3) {
alert('已經超過最大數量,請先關閉頁簽!');
}
然後將下面的程式都用else{}包起來。
在 MainPage_Flow.aspx 的
$(document).ready(function ()
{
addTab("TabTitle",
"MyWebs/ JQSingle1.aspx");
});
openForm('#JQDialog1', $('#dataGridMaster').datagrid('getSelected'), "viewed", 'dialog');
//最後兩個參數分別是打開的時候狀態(viewed, updated,inserted)
var remoteName = getInfolightOption($('#dataFormMaster')).remoteName;
var tableName = getInfolightOption($('#dataFormMaster')).tableName;
var queryWord = new Object();
queryWord.whereString = "TKQK10='" + $('#dataFormMasterTKQK10').refval('getValue') + "' AND " + "TKQK03=to_date('" + $('#dataFormMasterTKQK03').datebox('getValue') + "','YYYY/MM/DD')";
$.ajax({
type: "POST",
url: getRemoteUrl(remoteName, tableName, true),
data: { queryWord: $.toJSONString(queryWord) },
cache: false,
async: false,
success: function (data) {
index = $('#dataGridView').datagrid('getRowIndex', $('#dataGridView').datagrid('getSelected'));
var rows = $.parseJSON(data);
if (rows.length > 0) {
$('#dataGridView').datagrid('updateRow', { index: index, row: rows[0] });
}
}
});
這個需要在JQClientTools下的JQTree.cs的91行的onLoadSuccess內執行:
$('#" + this.ClientID + @"').tree('collapseAll');
然後重建JQClientTools專案,並確保網站下該dll的參考是最新的。
[WebMethod(true)]
public void LogOut(string userId)
{
EFServiceClient client =
EFClientTools.ClientUtility.Client;
var ipAddress =
HttpContext.Current.Request.UserHostAddress;
var clientInfo = new ClientInfo()
{
UserID = userId,
IPAddress = ipAddress,
Locale = "en-us",
UseDataSet = true
};
client.LogOff(clientInfo);
}
需要自己修改Email.cs的方法:
一共有4個方法:
SendTo2:是Schecudling使用的DelaySendMail方法。
SendTo3:是通知
SendTo4:是退回
SendTo:是其他Submit,approve等使用。
可以在呼叫程式時執行:
$.messager.progress({ msg: 'saving controls ...' });
在success的時候執行
$.messager.progress('close'); //進度條結束
請在logon.aspx.cs的Page_load事件找到:
LoadCookie();
在下面增加:
(Login1.FindControl("Database") as DropDownList).SelectedValue = "ERPS";
//預設為ERPS
.ASPX部分:
//toolitem的onclick事件
function exportlocal() {
var datagrid = $('#JQDataGrid7');//要匯出EXCEL的GRID ID
var exportFields = [];
var fields =
datagrid.datagrid('getColumnFields', true);
for (var i = 0; i <
fields.length; i++) {
exportFields.push({ field: fields[i], title: datagrid.datagrid('getColumnOption',
fields[i]).title });
}
fields
= datagrid.datagrid('getColumnFields');
for (var i = 0; i <
fields.length; i++) {
exportFields.push({
field: fields[i], title: datagrid.datagrid('getColumnOption', fields[i]).title });
}
var rows = $('#JQDataGrid7').datagrid('getRows');//要匯出EXCEL的GRID ID
$.ajax({
type: "POST",
data:
{ mode: 'export',
fields: $.toJSONString(exportFields), rows: $.toJSONString(rows) },
cache: false,
async: false,
success: function (data) {
window.open('../handler/JqFileHandler.ashx?File=' + data, 'download');
}
});
}
原funtion
public override void ProcessRequest(HttpContext context)
{
if (!JqHttpHandler.ProcessRequest(context))
{
base.ProcessRequest(context);
}
}
改為
public override void ProcessRequest(HttpContext context)
{
if
(context.Request.Form["mode"] == "export")
{
Export(context);
}
else if (!JqHttpHandler.ProcessRequest(context))
{
base.ProcessRequest(context);
}
}
//新增下面的funtion
private void Export(HttpContext context)
{
var exportTable = new System.Data.DataTable();
var fields =
(Newtonsoft.Json.Linq.JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(context.Request.Form["fields"]);
var rows =
(Newtonsoft.Json.Linq.JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(context.Request.Form["rows"]);
foreach
(Newtonsoft.Json.Linq.JObject field in fields)
{
var columnType = typeof(string);
if (rows.Count > 0)
{
var obj = rows[0] as
Newtonsoft.Json.Linq.JObject;
var value = obj[(string)field["field"]];
if (value.Type ==
Newtonsoft.Json.Linq.JTokenType.Integer)
{
columnType = typeof(int);
}
else if (value.Type ==
Newtonsoft.Json.Linq.JTokenType.Float)
{
columnType = typeof(double);
}
}
exportTable.Columns.Add(new System.Data.DataColumn((string)field["field"], columnType) { Caption = (string)field["title"] });
}
foreach
(Newtonsoft.Json.Linq.JObject row in rows)
{
var dataRow =
exportTable.NewRow();
foreach (var column in row)
{
if
(exportTable.Columns.Contains(column.Key))
{
dataRow[column.Key] = column.Value.ToString();
}
}
exportTable.Rows.Add(dataRow);
}
var fileName = string.Format("{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmss"));
var path = string.Format("../Files/{0}",
fileName);
JQUtility.ExportToExcel(exportTable,
HttpContext.Current.Server.MapPath(path),
"", new List<string>());
context.Response.ContentType = "text/plain";
context.Response.Write(fileName);
}