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

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

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 οnclick=""><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




仅供学习参考,禁止商业用途,否则后果自负!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值