一、前台主要页面:
1. asp.net 自定义CUSTOMDATAGRID 数据绑定控件:当用CUSTOMDATAGRID显示数据的时候,实际上是一些td 显示。
<tittle:CUSTOMDATAGRID ></FooterStyle>
</asp:TemplateColumn>
</Columns>
</tittle:CUSTOMDATAGRID>
2. 前台Javascript:
function checkData() {
var tr = document.getElementById("grdResult").getElementsByTagName("tr");
for (i = 1; i < tr.length; i++) {//循环判定
var td = tr[i].getElementsByTagName("td");
if (td[3].children[0] != undefined && (parseInt(td[3].children[0].value) != 10 && parseInt(td[3].children[0].value) != 20)) {
alert(第 + i + 行 + 的某值不能为空);
return false;
}
}
return true;
}
//保存按钮判断
function savePageValue() {
if (!checkData()) {
return false;
}
var val = "";
var auditItem = "";
var inputItem = "";
var auditResult = "";
var trs = document.getElementById("grdResult").getElementsByTagName("tr");
for (a = 1; a < trs.length; a++) {
var tds = trs[a].getElementsByTagName("td");
if (tds[1].children[0].childNodes[0].defaultValue != ""
|| tds[4].children[0].defaultValue != ""
|| tds[5].children[0].defaultValue != ""
|| tds[6].children[0].defaultValue != ""
|| tds[7].children[0].defaultValue != "") {
auditItem = tds[1].children[0].childNodes[0].nodeValue + "$" //审核项目
if (tds[2].children[0] != undefined) {
inputItem = auditItem + tds[2].children[0].value + "$"
}
if (tds[2].children[0] == undefined) {//输入项目
inputItem = auditItem + "&" + "$"
}
if (tds[3].children[0] != undefined) {//审核结果
auditResult = inputItem + tds[3].children[0].value + "$"
}
if (tds[3].children[0] == undefined) {
auditResult = inputItem + "," + "$"
}
val = auditResult
+ tds[4].children[0].value + "$"//关联字段
+ tds[5].children[0].value + "$"//审核字段ID
+ tds[6].children[0].value + "$"//是否通过审核
+ tds[7].children[0].value + "#"//审核结果ID 拼接字符串
+ val;
}
}
document.forms[0].hd_list.value = val;
return true;
}
其中:hd_list为隐藏域:<input type="hidden" />
二、C#后台来接受前台通过Javascript 传来的数据,并将数据存于集合List<string[]> 中,<必须引入名称空间using System.Collections.Generic>
主要代码如下:
//定义全局的数据集合数组
private List<string[]> saveList = new List<string[]>();
#region 取得前台通过JS获取来的数据
private void getProcessData()
{
Hashtable ht = new Hashtable();//实例化Hashtable对象
//修改数据
string[] OrderCount = this.hd_list.Value.Split('#');
//OrderCount.Length-1去掉head行
for (int i = 0; i < OrderCount.Length - 1; i++)
{
string[] orderDetail = OrderCount[i].Split('$');
//审核明细ID,是否自动判断,关联字段,输入项目,审核是否通过,审核机构,审核人,审核时间
string[] arrAuditItem = new string[8];
#region 审核字段的属性“是否自动判断”为自动判断的场合,则需要保存以下信息(输入项目值,审核是否通过,审核机构,审核人,审核时间)
if (Constants.C_VALUE_AUDITITEM_ISAUTOAUDIT.Equals(orderDetail[5]))
{
//输入项目
if (orderDetail[1] != "&")
{
arrAuditItem[3] = orderDetail[1];
}
//输入项目
if (orderDetail[1] == "&")
{
arrAuditItem[3] = "";
}
//关联字段
arrAuditItem[2] = orderDetail[3];
//放关联字段放在服务单字段里面查询
string servicesRelateField = logic.getRelateFieldById(arrAuditItem[2], dto.ServicesId);
//输入项目值=服务单.[关联字段]的场合,则设定“审核是否通过”为“通过”
if (servicesRelateField == arrAuditItem[3])
{
arrAuditItem[3] = Constants.C_VALUE_ISTAUDITPASS; //20代表审核通过
}
}
#endregion
#region 审核字段的属性“是否自动判断”为手动判断的场合,则需要保存以下信息(是否自动判断 审核是否通过 审核机构 审核人 审核时间)
if (Constants.C_VALUE_AUDITITEM_ISHANDAUDIT.Equals(orderDetail[5]))
{
//审核是否通过
if (orderDetail[2] != ",")
{
arrAuditItem[4] = orderDetail[2];
}
}
#endregion
//审核明细ID
arrAuditItem[0] = orderDetail[4];
//是否自动判断
arrAuditItem[1] = orderDetail[5];
//审核结果ID
dto.Auditresultid = orderDetail[6];
//审核机构
arrAuditItem[5] = dto.BelongShopID;
//审核人
arrAuditItem[6] = dto.BelongShopMemberName;
//审核时间
arrAuditItem[7] = DateTime.Now.AddDays(-8).ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);//执行Update的时候,要 在当前时间的基础上减去8个小时(MS CRM操作就需要这样子处理)
ht.Add(i, arrAuditItem[0]);将审核字段明细ID添加到哈希表中
saveList.Add(arrAuditItem);把数组对象arrAuditItem添加到全局集合数组中。
}
}
#endregion