您的位置:首页 > 其它

凯云水利水电工程造价系统 (四) 配合比单价模块

2015-06-01 19:45 429 查看

凯云水利水电工程造价系统 (四) 配合比单价模块

3.6-1功能实现

配合比单价的数据处理有:添加、批量修改、从定额导入、删除、复制、粘贴、导入、导出、

配合比单价的添加、批量修改、删除:点击添加会出现一个窗体,里面有相应的字段进行添加。批量修改 (如图3-3),选中要修改的数据,然后点击批量修改按钮,系统会自动的把选中的数据加载到相应的datagrid中,

把填好的了的数据录入到要修改的数据中,然后进行保存。也可以进行批量删除。

配合比单价从定额导入,在列表中选择需要导入的混凝土配合比。

配合比单价的复制、粘贴:对现有的数据进行复制、粘贴,为了进行区分,粘贴后的数据,代号会自动跟着”复制“二字,如果某条数据时再次复制、粘贴,那代号会重复出现”复制“二字。

配合比单价的导入、导出:系统将自动给出一个路径,把材料的单价的所有数据导入到一张Excel表。导入:先手动填写一些数据,这些数据要根据数据库的参数来写,一一对应才能导入到人工单价表中。

配合比单价明细的数据处理有:添加、删除、替换、复制、粘贴、计算

配合单价明细的添加、删除:添加之前编辑好的材料组成列表(图3-4)。选中相应的数据,进行删除。

配合比单价明细的替换、复制、粘贴:对选中的配合比单价进行替换。对现有的数据进行复制、粘贴,为了进行区分,粘贴后的数据,代号会自动跟着”复制“二字,如果某条数据时再次复制、粘贴,那代号会重复出现”复制“二字。



(图 1)

3.6-2 表和关系

配合比单价模块所涉及到的表:

SN
資料表
描述
16
SYS_BuildProjectList

建立项目表

33
SYS_MixPricecomposeList

导入配合比组成表

34
SYS_MixProportionClassesList

配合比分类列表

35
SYS_MixProportionPriceDetailList

配合比单价组成明细表

36
SYS_MixProportionPriceLeadList

导入配合比单价表

37
SYS_MixProportionPriceList

配合比单价表

48
SYS_QuoteEditionList

定额表

SYS_BuildProjectList

資料表名稱
SYS_BuildProjectList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
BuildProjectID

int identity

(10, 0)
NO
PK
建立项目ID

2
BuildProjectName

nchar

150
YES
建立项目名称

3
QuoteEditionID

int

(10, 0)
YES
外键
定额建立ID

SYS_MixPricecomposeList

資料表名稱
SYS_MixPricecomposeList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
MixPricecomposeID

int identity

(10, 0)
NO
PK
导入配合比单价组成ID

2
MaterialCode

nchar

50
YES
材料代号

3
Name

nchar

50
YES
名称

4
Unit

nchar

50
YES
单位

5
Amout

decimal

(18, 3)
YES
数量

6
MixProportionPriceLeadID

int

(10, 0)
YES
外键
导入配合比单价ID

SYS_MixProportionClassesList

資料表名稱
SYS_MixProportionClassesList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
MixProportionClassesID

int identity

(10, 0)
NO
PK
配合比单价分类ID

2
MixProportionClassesName

nchar

150
YES
配合比单价分类名称

3
MixProportionClassesFur_ID

int

(10, 0)
YES
配合比单价分类fur_ID

SYS_MixProportionPriceDetailList

資料表名稱
SYS_MixProportionPriceDetailList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
MixProportionPriceDetailID

int identity

(10, 0)
NO
PK
配合比单价明细ID

2
Code

nchar

150
YES
代号

3
Unit

nchar

150
YES
单位

4
BudgetPrice

nchar

150
YES
预算价格

5
QuoteAmout

nchar

150
YES
定额数量

6
MixProportionPriceID

int

(10, 0)
YES
配合比单价ID

7
Total

nchar

150
YES
总价

8
Name

nchar

50
YES
名称

SYS_MixProportionPriceLeadList

資料表名稱
SYS_MixProportionPriceLeadList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
MixProportionPriceLeadID

int identity

(10, 0)
NO
PK
导入配合比单价ID

2
MudMixerCode

nchar

50
YES
混泥土代号

3
Name

nchar

100
YES
名称

4
Unit

nchar

50
YES
单位

5
StrengthXGrade

nchar

50
YES
强度等级

6
CementStrength

nchar

50
YES
水泥强度

7
MixProportionClassesID

int

(10, 0)
YES
配合比单价分类ID

SYS_MixProportionPriceList

資料表名稱
SYS_MixProportionPriceList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
MixProportionPriceID

int identity

(10, 0)
NO
PK
配合比单价ID

2
BuildProjectID

int

(10, 0)
YES
建立项目ID

3
MixProportionPriceName

nchar

150
YES
配合比单价名称

4
Code

nchar

150
YES
代号

5
Unit

nchar

150
YES
单位

6
Remark

nchar

150
YES
备注

7
Budget

nchar

150
YES
预算单价

SYS_QuoteEditionList

資料表名稱
SYS_QuoteEditionList

資料表描述
SN
欄位
資料型態
長度
null
PK
描述
1
QuoteEditionID

int identity

(10, 0)
NO
PK
定额ID

2
QuoteEditionName

nchar

150
YES
定额名称



(图 2)

3.6-3模块功能的具体实现

3.6-3.1配合比单价模块功能分解

3.6-3.1.1 配合比单价
3.6-3.1.1.1 添加

(1)可以手动添加配合比单价,点击添加按钮,弹出添加配合比窗体,代号是自定生成的:



(图 3)
//自动增加单号
var Code=0;
function oddnumbers(){
//把这个方法放在添加按钮的点击事件里
$('#tianjia').window('open');
//当点击添加时,添加配合比窗体就打开

$.getJSON("/PeiHeBiDanJia/oddnumbers/",

function (data) {
Code= data[0].oddnumbers;
var t="HD"+ Code;
$('#Code').val(t);
//把获取的代号赋值给名为代号的文本框



(图 4)

(2)输入完数据之后,点击添加配合比单价窗体的添加按钮,所触发的界面层的方法的代码:

//新增配合比单价
function MixProportionPrice_Insert(){
var   r=document.getElementById("repeat").checked;
//把被选中的多次重复添加的复选框的值赋值给r
if (confirm( '是否需要新增?')){
//确定是否需要新增
$.getJSON("/PeiHeBiDanJia/MixProportionPrice_Insert?BuildProjectID="+@Session["项目ID"]+"&"
+"MixProportionPriceName="+$('#Name').val()+"&"
+"Code="+$('#Code').val()+"&"
+"Unit="+$('#Unit').val()+"&"
+"Remark="+$('#Remark').val()+"&"
+"Budget="+$('#Price').val(),
function(data){

if (data >0){

$.getJSON("/PeiHeBiDanJia/BindingMixProportionPrice?BuildProjectID="+@Session["项目ID"],
//重新查询配合比单价的代码
function(data){
$('#w配合比单价表').datagrid('loadData', data);
alert("新增成功!");
//新增成功之后,如果复选框被选中,则继续留在当前的窗体,并清空文本框的值
if(r){
$('#tianjia').window('open');
$('#Name').val("");
$('#Code').val("");
$('#Unit').val("");
$('#Remark').val("");
$('#Price').val("");
oddnumbers();
//自动增加代号的方法
}
else{

$('#tianjia').window('close');
//如果不需要重复添加,则关闭当前窗体
}
});

}
else{
alert("新增失败!");
}
});
}

}

//自动增加代号
var Code=0;
function oddnumbers(){
$('#tianjia').window('open');

$.getJSON("/PeiHeBiDanJia/oddnumbers/",

function (data) {
Code= data[0].oddnumbers;
var t="HD"+ Code;
$('#Code').val(t);
});

}


//自动增加代号
var Code=0;
function oddnumbers(){
$('#tianjia').window('open');

$.getJSON("/PeiHeBiDanJia/oddnumbers/",

function (data) {
Code= data[0].oddnumbers;
var t="HD"+ Code;
$('#Code').val(t);
});

}


(3)把新增的数据传到控制器的代码:
#region 配合比单价的新增
public ContentResult MixProportionPrice_Insert(int BuildProjectID, string MixProportionPriceName, string Code, string Unit, string Remark, string Budget)
{
DataTable DT = myMixProportionPrice.MixProportionPrice_Insert(BuildProjectID, MixProportionPriceName, Code, Unit, Remark, Budget);
List<Dictionary<string, object>> listReturn = ConvertHelper.DtToList(DT);
string i = DT.Rows[0][0].ToString();
return Content(i);

}
#endregion


(4)把新增的数据传到逻辑层的代码:
#region 配合比单价的新增
public DataTable MixProportionPrice_Insert(int BuildProjectID, string MixProportionPriceName, string Code, string Unit, string Remark, string Budget)
{
SqlParameter[] mySqlParameter = {
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@BuildProjectID",SqlDbType.Int),
new SqlParameter ("@MixProportionPriceName",SqlDbType.Char),
new SqlParameter ("@Code",SqlDbType.Char),
new SqlParameter ("@Unit",SqlDbType.Char),
new SqlParameter ("@Remark",SqlDbType.Char),
new SqlParameter ("@Budget",SqlDbType.Char),//要和存储过程中的变量相对应//
};
mySqlParameter[0].Value = "MixProportionPrice_Insert";//和数据层的存储过程名相对应
mySqlParameter[1].Value = BuildProjectID;
mySqlParameter[2].Value = MixProportionPriceName;
mySqlParameter[3].Value = Code;
mySqlParameter[4].Value = Unit;
mySqlParameter[5].Value = Remark;
mySqlParameter[6].Value = Budget;
DataTable i = myDALMethod.DAL_SelectDB_Par("MixProportionPrice", mySqlParameter);
return i;//返回数据给控制器

}
#endregion


(5)把新增的数据传到数据层的SQL语句:
--新增配合比
if @Type='MixProportionPrice_Insert'
begin
insert SYS_MixProportionPriceList
values (@BuildProjectID,@MixProportionPriceName, @Code, @Unit, @Remark, @Budget)
SELECT @@IDENTITY
End


(6)新增之后的截图:



(图 5)

3.6-3.1.1.2 批量修改
(1)选中你所要修改的数据,然后点击批量修改的按钮,就会出现对数据进行批量修改的窗体:



(图 6)

当点击批量修改的窗体时,就执行绑定数据的方法:

//批量修改
function BatchUpdata(){
var rowss = $('#w配合比单价表').datagrid('getSelected');
//先选中要修改的数据
if(rowss){
//如果选中了,才能执行下面的代码
$('#w批量修改').window('open');
//批量修改的窗体就会打开

var row = $('#w配合比单价表').datagrid('getData');
//获取配合比单价的所有数据
for (var y = 0; y< row.rows.length ; y++) {
//对查出来的数据进行循环
var chkXuanZe = "chk" + y;

if (document.getElementById(chkXuanZe).checked) {

$('#Updata').datagrid("appendRow", {
IntMixProportionPriceID:row.rows[y].MixProportionPriceID,
StringCode:row.rows[y].Code,
StringMixProportionPriceName:row.rows[y].MixProportionPriceName,
StringUnit:row.rows[y].Unit,
StringBudget:row.rows[y].Budget,
StrRemark:row.rows[y].Remark

}
);
}

}
ID=1;
}
else{
alert("请选中要批量修改的数据!");
}
}


//复选框

var d=0;
function returnBtnColumn(index,data,t) {
var XuanZe="chk" +t
return '<a onclick=""><input id="'+XuanZe+'" type="checkbox" /></a>';
}




(图 7)

点击数据,把数据绑定到填写配合比单价的文本框里,对要进行修改的数据修改:
然后点击录入数据,就修改完一条数据了:



(图8)



(图9)

//单价一行,进行绑定数据
var PeiHeBiPrice=$('#Updata').datagrid('getSelected');

$("#StringCode").val(PeiHeBiPrice.StringCode);

$('#StringName').val(PeiHeBiPrice.StringMixProportionPriceName);
$("#StringUnit").val(PeiHeBiPrice.StringUnit);
$("#StringPrice").val(PeiHeBiPrice.StringBudget);
$('#StringRemark').val(PeiHeBiPrice.StrRemark);
}


//录入数据
function EnteringData(){
var row = $('#Updata').datagrid('getData');
//获取datagrid中的所有数据
if (confirm("是否录入?")) {
//录入之前,先确定是否进行录入数据
for (var i = 0; i < row.rows.length; i++) {
var Check ="ch" +i;
if (document.getElementById(Check).checked){
//只有选择数据前的复选框的数据,才能录入数据
$('#Updata').datagrid("updateRow",
//对选中的数据进行修改
{ index: i, row: {
StringCode: $("#StringCode").val(),
StringMixProportionPriceName: $('#StringName').val(),
StringUnit: $("#StringUnit").val(),
StrRemark: $('#StringRemark').val()
}
});
}
}
}
alert("录入成功!!!");
//录入成功之后,就情况文本框的数据
$("#StringCode").val(""),
$('#StringName').val(""),
$("#StringUnit").val(""),
$("#StringPrice").val(""),
$('#StringRemark').val("")

}


(3)把数据录入完后,点击确认进行修改:



(图 10)



(图 11)

点击确认按钮时,把修改的数据传到界面层的方法代码:
function XiuGai()
var row = $('#Updata').datagrid('getData');
//因为是批量修改,所以要先获取所有修改的数据
for (var i = 0; i < row.rows.length; i++) {
//获取完数据之后,就进行循环处理
$.getJSON("/PeiHeBiDanJia/Update_MixProportionPriceList?BuildProjectID=" + @Session["项目ID"] + "&"
+ "MixProportionPriceName=" + row.rows[i].StringMixProportionPriceName + "&"
+ "Code=" +row.rows[i].StringCode + "&"
+ "Unit=" + row.rows[i].StringUnit+ "&"
+ "Remark=" +row.rows[i].StrRemark + "&"
+ "Budget=" + row.rows[i].StringBudget+"&"
+"MixProportionPriceID="+row.rows[i].IntMixProportionPriceID ,

function (data) {
if (data > 0) {

$.getJSON("/PeiHeBiDanJia/BindingMixProportionPrice?BuildProjectID="+@Session["项目ID"],
function(data){
$('#w配合比单价表').datagrid('loadData', data);

});

} else {

}
});
}
alert("修改成功!");
$('#Updata').datagrid("loadData",{total:0,rows:[]});
$('#w批量修改').window('close');

}


把修改的数据传到控制器的代码:
public ContentResult Update_MixProportionPriceList(string BuildProjectID, string MixProportionPriceName, string Code, string Unit, string Remark, string Budget, string MixProportionPriceID)
//参数个数要和逻辑层的个数对应,名字可以不一样
{
int i = myMixProportionPrice.Update_MixProportionPriceList(Convert.ToInt32(BuildProjectID), MixProportionPriceName, Code, Unit, Remark, Budget, Convert.ToInt32(MixProportionPriceID));
return Content(i.ToString());
//把值转化成字符串,并返回给界面
}
#endregion


逻辑层的方法:
#region 修改配合比单价
public int Update_MixProportionPriceList(int BuildProjectID, string MixProportionPriceName, string Code, string Unit, string Remark, string Budget, int MixProportionPriceID)
//逻辑层的参数个数要和数据层的个数对应
{
SqlParameter[] mySqlParameter = {
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@BuildProjectID",SqlDbType.Int),
new SqlParameter ("@MixProportionPriceName",SqlDbType.Char),
new SqlParameter ("@Code",SqlDbType.Char),
new SqlParameter ("@Unit",SqlDbType.Char),
new SqlParameter ("@Remark",SqlDbType.Char),
new SqlParameter ("@Budget",SqlDbType.Char),
new SqlParameter ("@MixProportionPriceID",SqlDbType.Int),
};
mySqlParameter[0].Value = "Update_MixProportionPrice";
//要和数据层的存储过程名对应
mySqlParameter[1].Value = BuildProjectID;
mySqlParameter[2].Value = MixProportionPriceName;
mySqlParameter[3].Value = Code;
mySqlParameter[4].Value = Unit;
mySqlParameter[5].Value = Remark;
mySqlParameter[6].Value = Budget;
mySqlParameter[7].Value = MixProportionPriceID;
int i = myDALMethod.DAL_OPTableDB_Par("MixProportionPrice",mySqlParameter);
return i;

}
#endregion

3.6-3.1.1.3 从定额导入
(1)点击从定额导入的按钮,就会弹出定额导入的窗体:



(图 12)

(1.1)绑定分类列表的下拉树的数据:

界面层的代码:

// 绑定下拉树
function BangDingTree() {
$.getJSON("/PeiHeBiDanJia/TreeBangDing",

function (data) {

$('#treeMix').tree('loadData', data);
//把从控制器返回来的值加载到下拉树的节点中
});

}


控制器的方法:
public ActionResult TreeBangDing()
{
DataTable dt = myMixProportionPrice.BindingTree();
string stringtree = GetDataString(dt, "0");
stringtree = stringtree.Remove(stringtree.Length - 2, 2);
return Content(stringtree);
}

public string GetDataString(DataTable dt, string id)
{
string stringbuilder = "";
DataView dv = new DataView(dt);
dv.RowFilter = "父ID=" + id;
DataTable dtChild = dv.ToTable();
if (dtChild.Rows.Count > 0)
{
stringbuilder += "[";
for (int i = 0; i < dtChild.Rows.Count; i++)
{
string leiid = dtChild.Rows[i]["部门ID"].ToString();
string childstring = GetDataString(dt, leiid);
if (childstring.Length > 0)
{
stringbuilder += "{ \"id\":\"" + dtChild.Rows[i]["部门ID"].ToString() + "\",\"text\":\"" + dtChild.Rows[i]["部门名称"].ToString().Trim() + "\",\"state\":\"closed\",\"children\":";

stringbuilder += childstring;

}
else
{
stringbuilder += "{\"id\":\"" + dtChild.Rows[i]["部门ID"].ToString() + "\",\"text\":\"" + dtChild.Rows[i]["部门名称"].ToString().Trim() + "\"},";
}
}

stringbuilder = stringbuilder.Remove(stringbuilder.Length - 1, 1);

stringbuilder += "]},";

}
return stringbuilder;
}


逻辑层的方法:
#region 树形的绑定
public DataTable BindingTree() {
SqlParameter[] mySqlParameter = {
new SqlParameter ("@Type",SqlDbType.Char),
};
mySqlParameter[0].Value="BindingTree";
DataTable dt=myDALMethod.DAL_SelectDB_Par("MixProportionPrice",mySqlParameter);
return dt;
}
#endregion


数据层的SQL查询语句:
--绑定下拉树
if @Type='BindingTree'
BEGIN
SELECT     MixProportionClassesID as 部门ID, MixProportionClassesName as 部门名称, MixProportionClassesFur_ID AS 父ID
FROM         SYS_MixProportionClassesList

END


(1.2)根据单价分类列表的节点ID来查询配合比单价的导入数据:



(图 13)
界面层的代码:

//选中节点进行查询
function OnClickTreeSelected() {
var treeMixID = $('#treeMix').tree('getSelected');

$.getJSON("/PeiHeBiDanJia/SpotTreeSelected?MixProportionClassesID="+ treeMixID.id,
//根据节点ID进行查询导入的配合比单价
function (data) {

$('#w导入配合比单价').datagrid('loadData', data);
}
);
}


控制器的代码:
#region  点击下拉树
public ActionResult SpotTreeSelected(int MixProportionClassesID)
{
DataTable dt = myMixProportionPrice.SpotTreeSelected(MixProportionClassesID);
List<Dictionary<string, object>> listReturn = ConvertHelper.DtToList(dt);
return Json(listReturn, JsonRequestBehavior.AllowGet);
}
#endregion


逻辑层的代码:

#region 点击下拉树
public DataTable SpotTreeSelected(int MixProportionClassesID){
SqlParameter [] mySqlParameter={
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@MixProportionClassesID",SqlDbType.Int),
};
mySqlParameter[0].Value="SpotTreeSelected";
mySqlParameter[1].Value=MixProportionClassesID;
DataTable dt=myDALMethod.DAL_SelectDB_Par("MixProportionPrice",mySqlParameter);
return dt;
}
#endregion


数据层的SQL查询语句:
--点击下拉树
if @Type='SpotTreeSelected'
begin
SELECT     MixProportionPriceLeadID, MudMixerCode, Name, Unit, StrengthXGrade, CementStrength, MixProportionClassesID
FROM         SYS_MixProportionPriceLeadList
where MixProportionClassesID=@MixProportionClassesID
--根据下拉树的节点来查询配合比单价的
end


选中要导入的配合比单价,相应的配合比组成会自动处来,这时点击左上角的保存按钮,进行到导入:



(图 14)



(图 15)

点击保存按钮,所触发的界面层的方法的代码:

//导入定额数据
function LeadData(){

var MixProportionPriceLead=$('#w导入配合比单价').datagrid('getSelected');
//要先选中导入配合比单价的一行数据
var d=$('#w配合比组成').datagrid('getData');
if(MixProportionPriceLead){
if(confirm('是否需要导入此数据?')){
$.getJSON("/PeiHeBiDanJia/MixProportionPrice_Insert?BuildProjectID="+@Session["项目ID"]+"&"
+"MixProportionPriceName="+MixProportionPriceLead.Name+"&"
+"Code="+MixProportionPriceLead.MudMixerCode+"&"
+"Unit="+MixProportionPriceLead.Unit+"&"
+"Remark="+"..."+"&"
+"Budget="+"0",
function(data){
if (data>0){
BindingMixProportionPrice();

for(var i=0;i<d.rows.length;i++){

$.getJSON("/PeiHeBiDanJia/InsertMixPriceDetail?Code="+$('#w配合比组成').datagrid('getData').rows[i]["MaterialCode"]+"&"
+"Unit="+$('#w配合比组成').datagrid('getData').rows[i]["Unit"]+"&"
+"BudgetPrice="+"0"+"&"
+"MixProportionPriceID="+data+"&"
+"Total="+"0"+"&"
+"Name="+$('#w配合比组成').datagrid('getData').rows[i]["Name"]+"&"
+"QuoteAmout="+$('#w配合比组成').datagrid('getData').rows[i]["Amout"],
function(data){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID,
function(data){

$('#w配合比明细').datagrid('loadData', data);
});

});

}

}

});

alert("导入成功!");
$('#w从定额导入配合比').window('close');
}
else{
alert("您已放弃导入此数据!");
}
}
else{
alert("请选中要导入的数据!");
}
}


导入成功后的截图:



(图 16)

3.6-3.1.1.4 删除

(1)对于配合比单价的删除(可以选择多条数据进行删除)



(图 17)

界面层的代码:

//删除配合比
function Delete_MixProportionPrice(){

var MixProportionPrice=$('#w配合比单价表').datagrid('getData');
//首先要查询出配合比单价的所有数据
if (confirm('是否需要删除此数据?')){
//进行确认是否要删除
for(var i=1;i<MixProportionPrice.rows.length+1;i++){
//把获取出的数据进行循环
var chkXuanZe = "chk" + i;
var y=i-1;

if(document.getElementById(chkXuanZe).checked)
{
$.getJSON("/PeiHeBiDanJia/Delete_MixProportionPrice?MixProportionPriceID="+MixProportionPrice.rows[y].MixProportionPriceID,
function(data){
if (data>0){

$.getJSON("/PeiHeBiDanJia/BindingMixProportionPrice?BuildProjectID="+@Session["项目ID"],
function(data){
$('#w配合比单价表').datagrid('loadData', data);
}
);
alert("删除成功!");

}
});

}
}
}
ID=0;
}


把删除的值传到控制器的代码:

#region  删除人工单价
public ContentResult Delete_MixProportionPrice(int MixProportionPriceID)
{
int i = myMixProportionPrice.Delete_MixProportionPrice(MixProportionPriceID);
return Content(i.ToString());
}
#endregion


逻辑层的代码:

#region  删除配合比单价
public int Delete_MixProportionPrice(int MixProportionPriceID)
{
SqlParameter[] mySqlParameter = {
new SqlParameter ("@type",SqlDbType.Char),
new SqlParameter ("@MixProportionPriceID",SqlDbType.Int),
};
mySqlParameter[0].Value = "Delete_MixProportionPrice";
mySqlParameter[1].Value = MixProportionPriceID;
int i = myDALMethod.DAL_OPTableDB_Par("MixProportionPrice",mySqlParameter);
return i;
}
#endregion


数据层的SQL语句:

--删除配合比单价
if @Type='Delete_MixProportionPrice'
begin
delete SYS_MixProportionPriceList
where MixProportionPriceID=@MixProportionPriceID
end


3.6-3.1.1.5 复制
(1)对现有的配合比单价进行复制,但是 预算单价必须改为0:



(图 18)
界面层的代码:

//复制
var CopyCode="";
var CopyMixProportionPriceName="";
var CopyUnit="";
var CopyBudget="";
var CopyRemark="";
//设置为全局变量
var FuZhi=0;
function Copy(){
var MixProportionPrice=$('#w配合比单价表').datagrid('getSelected');
if (MixProportionPrice){
if(confirm('是否需要复制此条数据?')){
//如果执行的复制这个方法,就把1赋值给变量FuZhi
FuZhi=1;
CopyCode=MixProportionPrice.Code.trim();
CopyMixProportionPriceName=MixProportionPrice.MixProportionPriceName.trim();
CopyUnit=MixProportionPrice.Unit.trim();
CopyBudget=MixProportionPrice.Budget.trim();
CopyRemark=MixProportionPrice.Remark.trim();
//获取要复制的数据
alert("复制成功!");
}
else{
alert("已放弃复制此数据!");
}
}

else{
alert("亲,请先选中数据哦");
}
}


3.6-3.1.1.6 粘贴




(图 19)

复制成功之后,就点击粘贴:

function  Paste(){

var MixProportionPrice=$('#w配合比单价表').datagrid('getSelected');
var y=CopyCode;
var t=y.length;
var e=y.substring(t-2,t);
var tr=CopyCode+"_复制";
var i=tr.length;
var d=tr.substring(i-3,i);
if(FuZhi==1){
//只有先执行了复制,才能进行粘贴
if(MixProportionPrice){
if(confirm("需要粘贴这条数据吗?")){
if (e=="_复制"){

var Code=tr+"-_复制"
$.getJSON("/PeiHeBiDanJia/MixProportionPrice_Insert?BuildProjectID="+@Session["项目ID"]+"&"
+"MixProportionPriceName="+CopyMixProportionPriceName+"&"
+"Code="+Code+"&"
+"Unit="+CopyUnit+"&"
+"Remark="+CopyRemark+"&"
+"Budget="+"0",
function(data){

BindingMixProportionPrice();
alert("粘贴成功,数据已经在最后一行");
});
}
else{
alert(tr);
$.getJSON("/PeiHeBiDanJia/MixProportionPrice_Insert?BuildProjectID="+@Session["项目ID"]+"&"
+"MixProportionPriceName="+CopyMixProportionPriceName+"&"
+"Code="+tr+"&"
+"Unit="+CopyUnit+"&"
+"Remark="+CopyRemark+"&"
+"Budget="+CopyBudget,
function(data){

BindingMixProportionPrice();
alert("粘贴成功,数据已经在最后一行");
});

}
}
else{
alert("已放弃粘贴");
}
}
else{
alert("请先复制!");
}
}

else{
//如果没有进行复制,就点击粘贴,就会提醒你先复制
alert("请先复制!");
}
}


3.6-3.1.1.7 导出

(1)对所有的配合比单价进行导出功能:



(图 20)

控制器的代码:

function daoru() {

window.location.href = "/PeiHeBiDanJia/DownloadFile?BuildProjectID="+@Session["项目ID"];
}
控制器的代码:
#region 导出配合比单价
public FileResult DownloadFile(int BuildProjectID)
{
DataSet ds = new DataSet();
DataTable dt = myMixProportionPrice.BindingMixProportionPrice(BuildProjectID);

NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");

NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
rowtemp.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString().Trim());

}
}

System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", "导出.xls");

}
#endregion


逻辑层的代码:
#region 绑定配合比单价
public DataTable BindingMixProportionPrice(int BuildProjectID)
{
SqlParameter[] mySqlParameter = {
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@BuildProjectID",SqlDbType.Int),
};
mySqlParameter[0].Value = "BindingMixProportionPrice";
mySqlParameter[1].Value = BuildProjectID;
DataTable dt = myDALMethod.DAL_SelectDB_Par("MixProportionPrice",mySqlParameter);
return dt;
}
#endregion


数据层SQL查询语句:
--绑定配合比单价
if @Type='BindingMixProportionPrice'
begin
SELECT     MixProportionPriceID, BuildProjectID,ltrim(rtrim(MixProportionPriceName)) as MixProportionPriceName,ltrim(rtrim(Code))as Code,ltrim(rtrim(Unit))as Unit,ltrim(rtrim(Remark)) as Remark , Budget
FROM         SYS_MixProportionPriceList
where     BuildProjectID=@BuildProjectID

end



(图 21)

3.6-3.1.1.8 导入

(1)导入一些数据到配合比单价datagrid中:





(图 22)

界面层的方法:

<form action="/PeiHeBiDanJia/GetTableFromExcel" method="post"  enctype="multipart/form-data">

<text>选择上传文件</text>
<input name="file1" type="file" id="file" />
<input type="submit" name="Upload" value="导入" />

</form>


控制器的代码:
#region 导入
public ActionResult GetTableFromExcel()
{
try
{
HttpPostedFileBase fostField = Request.Files["file1"];
Stream streamfile = fostField.InputStream;

HSSFWorkbook hssfworkbook = new HSSFWorkbook(streamfile);
using (NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0))
{
DataTable table = new DataTable();
IRow headerRow = sheet.GetRow(0);
int cellCount = headerRow.LastCellNum;
int rowCount = sheet.LastRowNum;

for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = table.NewRow();

if (row != null)
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = GetCellValue(row.GetCell(j));

}
}
table.Rows.Add(dataRow);

}
for (int i = 0; i < table.Rows.Count; i++)
{

myMixProportionPrice.MixProportionPrice_Insert(Convert.ToInt32(table.Rows[i][0]), table.Rows[i][1].ToString(), table.Rows[i][2].ToString(), table.Rows[i][3].ToString(), table.Rows[i][4].ToString(), table.Rows[i][5].ToString());
//调用逻辑层的方法(通过参数进行传参)

}
}
return Content("");

}
catch {
return Content("");
}
}

private static string GetCellValue(ICell cell)
{
if (cell == null)
return string.Empty;
switch (cell.CellType)
{
case CellType.BLANK:
return string.Empty;
case CellType.BOOLEAN:
return cell.BooleanCellValue.ToString();
case CellType.ERROR:
return cell.ErrorCellValue.ToString();
case CellType.NUMERIC:
case CellType.Unknown:
default:
return cell.ToString();
case CellType.FORMULA:
try
{
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
e.EvaluateFormulaCell(cell);
return cell.ToString();
}
catch
{
return cell.NumericCellValue.ToString();
}

}
}
#endregion


逻辑层的方法:

#region 配合比单价的新增
public DataTable MixProportionPrice_Insert(int BuildProjectID, string MixProportionPriceName, string Code, string Unit, string Remark, string Budget)
{
SqlParameter[] mySqlParameter = {
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@BuildProjectID",SqlDbType.Int),
new SqlParameter ("@MixProportionPriceName",SqlDbType.Char),
new SqlParameter ("@Code",SqlDbType.Char),
new SqlParameter ("@Unit",SqlDbType.Char),
new SqlParameter ("@Remark",SqlDbType.Char),
new SqlParameter ("@Budget",SqlDbType.Char),
};
mySqlParameter[0].Value = "MixProportionPrice_Insert";
mySqlParameter[1].Value = BuildProjectID;
mySqlParameter[2].Value = MixProportionPriceName;
mySqlParameter[3].Value = Code;
mySqlParameter[4].Value = Unit;
mySqlParameter[5].Value = Remark;
mySqlParameter[6].Value = Budget;
DataTable i = myDALMethod.DAL_SelectDB_Par("MixProportionPrice", mySqlParameter);
return i;

}
#endregion


仅供学习参考,禁止商业用途,否则后果自负!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: