1.=============jquery==================
================================================
以下是部分代码,不可能非常全,大家理解其中的手法就好
//ddlGoods
function addLine()
{
//================================================================
var GoodsName = $("#ddlGoods").find("option:selected").text(); //先读取要添加的数据
var GoodsId = $('#ddlGoods').val();
var accPrice = $('#txtInPrice').val();
var accCount = $('#txtAcount').val();
var unit = $('#txtUnit').val();
var suppliertext = $("#ddlSupplierId").find("option:selected").text();
var supplierValue = $("#ddlSupplierId").val();
if (GoodsName == "" && accPrice == "" && accCount == "") //验证非空,保证数据合法性,基于lhgdialog
{
var d = dialog
({
title: '提示',
width: 300,
content: '请填写商品信息',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return;
}
if (supplierValue == "")
{
var d = dialog
({
title: '提示',
width: 300,
content: '请选择供应商',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return false;
}
if (GoodsId == "")
{
var d = dialog({
title: '提示',
width: 300,
content: '请选择商品',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return false;
}
if (accPrice == "")
{
var d = dialog({
title: '提示',
width: 300,
content: '请填写商品成本价',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return;
}
if (unit == "") {
var d = dialog({
title: '提示',
width: 300,
content: '请填写商品单位名称',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return;
}
if (accCount == "") {
var d = dialog({
title: '提示',
width: 300,
content: '请填写商品数量',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return;
}
if (accCount == "0") {
var d = dialog({
title: '提示',
width: 300,
content: '商品数量不能为空',
cancel: false,
okValue: "确定",
cancelValue: "取消",
ok: function () { }
});
d.show();
return;
}
var contens = $('#hf').val();
var yanzheng = $('#hfyanzheng').val(); //用隐藏域来存储验证值,防止重复添加
var tiaojian = (GoodsName + ",");
if (yanzheng.indexOf(tiaojian) > -1) {
$.dialog.alert("请勿重复添加!", null, $("#table"));
return false;
}
var tr = $('<tr></tr>'); //构建表格行
var name = $('<td><span id="' + GoodsId + '" style="margin-left:20px; ">' + GoodsName + '</span ></td>');
tr.append(name);
var Inprice = $('<td >' + accPrice + '</td>');
tr.append(Inprice);
var InCount = $('<td >' + accCount + '</td>');
var oDate = new Date();
var accrow = document.getElementById("table").rows.length + "-" + oDate.getFullYear() + "-" + (oDate.getMonth() + 1) + "-" + oDate.getDate() + "/" + oDate.getHours() + ":" + oDate.getMinutes() + ":" + oDate.getSeconds();
var InCount = $('<td><input id="GoodsNumber' + accrow + '"οnchange="moneyclick();" οnpaste="javascript: return false;" οnblur="bCount(this);" οnkeyup="chkCount(this);" class="GoodsCount" type="text" value="' + accCount + '"/></td>');
tr.append(InCount);
var Unit = $('<td >' + unit + '</td>');
tr.append(Unit);
debugger;
var supplier = $('<td ><span id="' + supplierValue + '">' + suppliertext + '</span></td>');
tr.append(supplier);
var deletes = $('<td><a style="cursor: pointer" οnclick="dcontent(this,' + "'" + GoodsName + "'," + accPrice + "," + accCount + ",'" + unit + "','" + suppliertext + "')" + '"' + ">删除</a>" + '</td>'); //配置删除按钮参数
tr.append(deletes);
var t = (GoodsName + ",");
val = (GoodsName + "," + accPrice + "," + accCount + "," + unit + "," + suppliertext + "," + GoodsId + "," + supplierValue + "," + 1 + "|");
$('#hf').val($('#hf').val() + val); //实际上把添加行的各个值存储在隐藏域中
$('#hfyanzheng').val($('#hfyanzheng').val() + t); //添加验证重复的string
$('#table').append(tr);
debugger;
var mon = parseFloat(accCount) * parseFloat(accPrice); //对于钱,数量等类型的数据必须 先转换再计算
if ($('#hfmoney').val() != "") {
$('#hfmoney').val(parseFloat($('#hfmoney').val()) + parseFloat(mon));
} else {
$('#hfmoney').val(parseFloat(0) + parseFloat(mon));
}
$("#lblTotal").html("总计:" + $('#hfmoney').val() + "元");
// alert($('#hfmoney').val());
// alert($('#hf').val());
// alert($('#hfyanzheng').val());
};
//删除
function dcontent(obj, GoodsName, accPrice, accCount, unit, suppliertext) {
alert("ss"); debugger;
var m = GoodsName + "," + accPrice + "," + accCount + "," + unit + "," + suppliertext + "," + 1 + "|";
// val = (GoodsName + "," + accPrice + "," + accCount + "," + unit + "," + suppliertext + "," + GoodsId + "," + supplierValue + "," + 1 + "|");,//根据传过来的值构建添加时候构建的string字符串
var ds = GoodsName + ",";
var d = dialog({
title: '提示',
width: 300,
content: '确定要删除吗?',
cancel: true,
okValue: "确定",
cancelValue: "取消",
ok: function () {
debugger;
$('#hfmoney').val(parseFloat($('#hfmoney').val()) - (parseFloat(accCount) * parseFloat(accPrice))); //如果有数量,钱等添加,这时候要减去1
$("#lblTotal").html("总计:" + $('#hfmoney').val());
var s = $('#hf').val();
re = s.replace(m, ""); //隐藏域中字符串-1
$('#hf').val(re);
var a = $('#hfyanzheng').val();
var del = a.replace(ds, ""); //验证字段-1
$('#hfyanzheng').val(del);
var t = document.getElementById('table');
t.deleteRow(obj.parentNode.parentNode.rowIndex); //根据传过来的参数判断是哪一行,然后删去
}
});
d.show();
};
//读取表格的值
function readTableMsg() {
debugger;
var flg = checkBaseMsg();
if (flg == false) {
return false;
}
$("#hfDetails").val("");
$("#hfmoney").val("0");
var trList = $("#table").find("tr") //行
for (var i = 1; i < trList.length; i++) { //请观察获取表格中各个数据的方法,注意他们的不同
var tdArr = trList.eq(i).find("td");
var goodsName = tdArr.eq(0).find("span").attr("id"); //获取span的id,eq(0):第一行,span 用attr获取id
var InPrice = tdArr.eq(1).text(); //获取第二格的文本
var goodsNumber = tdArr.eq(2).find('Input').val(); //获取input的文本
var unit = tdArr.eq(3).text();
var supplier = tdArr.eq(4).find("span").attr("id"); //4代表第五个格子
var sum = parseFloat(goodsNumber) * parseFloat(InPrice);
$("#hfmoney").val(parseFloat($("#hfmoney").val()) + parseFloat(sum));
if ($("#hfDetails").val() == "") {
$("#hfDetails").val(goodsName + "," + InPrice + "," + goodsNumber + "," + unit + "," + supplier + "|");
}
else {
$("#hfDetails").val($("#hfDetails").val() + goodsName + "," + InPrice + "," + goodsNumber + "," + unit + "," + supplier + "|");
}
}
return true;
}
===============================================
<asp:HiddenField ID="hfDetails" runat="server" />
<asp:Repeater ID="rptDetails" runat="server">
<HeaderTemplate>
<table id="table" width="900px" border="0" cellspacing="0" cellpadding="0" class="ltable table">
<tr>
<th style="text-align: left; padding-left: 30px;">
商品名称
</th>
<th align="left">
进价
</th>
<th align="left">
数量
</th>
<th align="left">
单位
</th>
<th align="left">
供应商
</th>
<th align='left'>
操作
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="padding-left: 30px;">
<span id="<%#Eval("GoodsName")%>">
<%#GetGoodsName(Eval("GoodsName").ToString())%></span>
<input type="hidden" id="hfOrderCode" value="<%#Eval("OrderCode")%>" />
</td>
<td>
<input id="bjp<%#Container.ItemIndex %>" class="price" type="hidden" value="<%#Eval("GoodsPrice")%>" />
<%#Eval("GoodsPrice")%>
</td>
<td>
<input id="accNumber<%#Container.ItemIndex %>" type="text" οnblur="bCount(this);"
οnchange="Price();" οnkeyup="chkCount(this);" value="<%#Eval("GoodsNumber")%>"
maxlength="3">
</td>
<td>
<%# Eval("GoodsUnit")%>
</td>
<td>
<span id="<%# Eval("SupplierId")%>">
<%#GetSupplier(Convert.ToInt32(Eval("SupplierId")))%></span>
</td>
<td>
<a style="cursor: pointer" οnclick="dcontent(this,<%#Eval("GoodsName")%>,'<%#Eval("GoodsPrice")%>',<%#Eval("GoodsNumber") %>,'<%#Eval("GoodsUnit")%>',<%#Eval("SupplierId")%>)">
删除</a>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td style="padding-left: 30px;">
<span id="<%#Eval("GoodsName")%>">
<%#GetGoodsName(Eval("GoodsName").ToString())%></span>
<input type="hidden" id="hfOrderCode" value="<%#Eval("OrderCode")%>" />
</td>
<td>
<input id="bjp<%#Container.ItemIndex %>" class="price" type="hidden" value="<%#Eval("GoodsPrice")%>" />
<%#Eval("GoodsPrice")%>
</td>
<td>
<input id="accNumber<%#Container.ItemIndex %>" type="text" οnblur="bCount(this);"
οnchange="Price();" οnkeyup="chkCount(this);" value="<%#Eval("GoodsNumber")%>"
maxlength="3">
</td>
<td>
<%# Eval("GoodsUnit")%>
</td>
<td>
<span id="<%# Eval("SupplierId")%>">
<%#GetSupplier(Convert.ToInt32(Eval("SupplierId")))%></span>
</td>
<td>
<a style="cursor: pointer" οnclick="dcontent(this,<%#Eval("GoodsName")%>,'<%#Eval("GoodsPrice")%>',<%#Eval("GoodsNumber") %>,'<%#Eval("GoodsUnit")%>',<%#Eval("SupplierId")%>)">
删除</a>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<div style="float: right; padding-right: 50px;">
<asp:Label ID="lblTotal" runat="server" Text="总计:"></asp:Label></div>
</div>
</div>
<asp:HiddenField ID="phf" runat="server" />
<div class="page-footer">
<div class="btn-list">
<asp:Button ID="btnSubmit" runat="server" Text="保存" CssClass="btn" OnClientClick="return readTableMsg()"
OnClick="btnSubmit_Click" /></div>
===========================================
//大保存
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(ddlBuyer.SelectedValue))
{
JscriptMsg("请选择采购员", "", "Error");
return;
}
if (string.IsNullOrEmpty(ddlProPoserId.SelectedValue))
{
JscriptMsg("请选择提交人", "", "Error");
return;
}
List<CommandInfo> listComm = new List<CommandInfo>();
List<CommandInfo> listComm2 = new List<CommandInfo>();
//添加单信息
Model.mn_ShppingList ev = new Model.mn_ShppingList();
ev.OrderCode = ordercode;
ev.BuyerId = Convert.ToInt32(ddlBuyer.SelectedValue);
ev.OrderDate = Convert.ToDateTime(dpkOrderDate.Text.Trim());
ev.DeliveryDate = Convert.ToDateTime(dpkDeliveryDate.Text.Trim());
ev.ProPoserId = Convert.ToInt32(ddlProPoserId.SelectedValue);
ev.ApplicationDate = Convert.ToDateTime(dpkApplicationDat.Text.Trim());
ev.AddTime = DateTime.Now;
ev.ShppingListState = 0;
// ev.ShppingListState = Convert.ToInt32(ddlListState.SelectedValue);
if (!string.IsNullOrEmpty(txtIsPay.Text.Trim()))
{
ev.IsPay = Convert.ToDecimal(txtIsPay.Text.Trim());//已支付金额
}
else
{
ev.IsPay = 0;
}
if (!string.IsNullOrEmpty(ddlIsPay.SelectedValue))
{
ev.PayState = Convert.ToInt32(ddlIsPay.SelectedValue);
}
else
ev.PayState = 0;
ev.PayAmout = Convert.ToDecimal(hfmoney.Value);//总金额
==========================请忽略上面一小段===============================
//详细
List<Model.mn_ShoppingDetails> modDetailsList = new List<Model.mn_ShoppingDetails>();
string count = hfDetails.Value; //读取隐藏域,并分割成数组
string[] jia = hfDetails.Value.Split('|'); //以‘|’为分割,做成数组
if (count != "")
{
if (ShopListBll.Delete(this.ordercode))
{
string[] j = count.Split('|');
for (int i = 0; i < j.Length - 1; i++)
{
string[] js = j[i].Split(','); //再次分割,已‘,’作为分隔符,做成数组
#region 成本价
// for (int a = 0; a < js.Length-1; a++)
// {
Model.mn_ShoppingDetails modDetail = new Model.mn_ShoppingDetails();
modDetail.GoodsName = js[0].Trim();
//modDetail.GoodsStandard = js[6].ToString();
modDetail.GoodsPrice = Convert.ToDecimal(js[1]);
modDetail.GoodsNumber = Convert.ToInt32(js[2].Trim()); //注意数据类型的转换
modDetail.GoodsUnit = js[3].Trim();
modDetail.SupplierId = Convert.ToInt32(js[4].Trim());
//编号
modDetail.OrderCode = ev.OrderCode;
modDetailsList.Add(modDetail);
// }
#endregion
}
}
}
//保存方法,没啥好说的
if (ShopListBll.SaveShoppintOrder(ev, modDetailsList))
{
JscriptMsg("保存成功!!!", "ShoppingList.aspx", "Success");
}
else
{
JscriptMsg("保存失败!!!", "", "Error");
}
}