當前位置:編程學習大全網 - 源碼下載 - c#程序中,這個程序是做什麽用的,大家幫我看看,重點能不能解釋解釋這四行都為什麽要這麽寫,多謝

c#程序中,這個程序是做什麽用的,大家幫我看看,重點能不能解釋解釋這四行都為什麽要這麽寫,多謝

using?System;

using?System.Collections.Generic;

using?System.Data.Entity;

using?System.Linq;

using?System.Text;

using?System.Web;

using?System.Web.UI;

using?System.Web.UI.WebControls;

namespace?BomListTest

{

public?partial?class?index?:?System.Web.UI.Page

{

protected?void?Page_Load(object?sender,?EventArgs?e)

{

if?(!IsPostBack)

{

DBBomEntities?entity?=?new?DBBomEntities();

var?listBom?=?entity.TbBom;

//加載父Bom

LoadParentPartNo(listBom);

var?bom?=?new?{?b?=?listBom.Where(p?=>?p.PartNo?==?"1000"&&p.ParentPartNo=="").FirstOrDefault(),

c?=?listBom.Where(p?=>?p.PartNo?==?"1000"&&p.ParentPartNo=="").Sum(p=>p.Qty)?};

if?(bom?==?null?||?bom.b?==?null)?return;

TreeNode?node?=?new?TreeNode();

node.Text?=?string.Format("{0}({1})",?bom.b.MaterialName,?bom.c);

node.Value?=?bom.b.MaterialCode;

node.Expanded?=?false;

node.ToolTip?=?"";

node.ImageUrl?=?"~\\image\\true.gif";

mainTree.Nodes.Add(node);

ResolveSubTree(listBom,?bom.b,?node);

}

}

private?void?LoadParentPartNo(DbSet<TbBom>?listBom)

{

var?mCode?=?string.Format("A{0}",?listBom.Max(p?=>?p.PartNo)?==?null"1000"?:?(Convert.ToInt32(listBom.Max(p?=>?p.PartNo))?+?1).ToString());

txtMaterialCode.Text?=?mCode;

listBom.ToList().ForEach(p?=>?ddlParentPartNo.Items.Add(new?ListItem(p.MaterialName,?p.PartNo)));

ddlParentPartNo.DataBind();

}

///?<summary>

///?遞歸展開Bom

///?</summary>

///?<param?name="listBom">所有數據集</param>

///?<param?name="bom">根節點物料</param>

///?<param?name="treeNode">根樹節點</param>

private?void?ResolveSubTree(DbSet<TbBom>?listBom,?TbBom?bom,?TreeNode?treeNode)

{

//獲取所有bom節點物料代碼為父節點代碼的物料

List<TbBom>?subListClone?=?listBom.Where(p?=>?p.ParentPartNo?==?bom.PartNo).ToList();

//獲取所有bom節點物料代碼為父節點代碼的物料(過濾重復物料,用作循環)

var?subList?=?listBom.Where(p?=>?p.ParentPartNo?==?bom.PartNo).GroupBy(p?=>?p.PartNo).Select(p?=>?p.FirstOrDefault()).ToList();

//如果包含子節點

if?(subList.Count?>?0)

{

//樹展開

treeNode.Expanded?=?false;

//循環遍歷子節點

foreach?(TbBom?subBom?in?subList)

{

//查詢出?子節點,和?當前父節點下?子節點的數量匯總

var?sbom?=?new?{?b?=?subBom,?c?=?subListClone.Where(p?=>?p.PartNo?==?subBom.PartNo).Select(p?=>?p.Qty).Sum()?};

//創建節點

TreeNode?node?=?new?TreeNode();

node.Value?=?sbom.b.PartNo;

node.ToolTip?=?GetParentNodeNames(listBom,?bom.ParentNos);

treeNode.ChildNodes.Add(node);

if?(Valied(bom.ParentNos,?sbom.b.PartNo))

{

node.ImageUrl?=?"~\\image\\flase.gif";

node.Text?=?string.Format("{0}",?sbom.b.MaterialName);

continue;

}

else

{

node.ImageUrl?=?"~\\image\\true.gif";

node.Text?=?string.Format("{0}({1})",?sbom.b.MaterialName,?sbom.c);

}

ResolveSubTree(listBom,?subBom,?node);

}

}

}

///?<summary>

///?判斷父節點是否存在

///?</summary>

///?<param?name="parentNo"></param>

///?<param?name="subNo"></param>

///?<returns></returns>

private?bool?Valied(string?parentNo,?string?subNo)

{

int?len?=?parentNo.Length;

for?(int?i?=?0;?i?<?len;?i?+=?4)

{

if?(parentNo.Substring(i,?4)?==?subNo)

{

return?true;

}

}

return?false;

}

///?<summary>

///?追溯父節點名字

///?</summary>

///?<param?name="listBom"></param>

///?<param?name="parentNodeNo"></param>

///?<returns></returns>

private?string?GetParentNodeNames(DbSet<TbBom>?listBom,?string?parentNodeNo)

{

int?len?=?parentNodeNo.Length;

StringBuilder?build?=?new?StringBuilder();

for?(int?i?=?len;?i?>?0;?i?-=?4)

{

var?bom?=?listBom.FirstOrDefault(p?=>?p.PartNo?==?parentNodeNo.Substring(i?-?4,?4));

if?(bom?!=?null)

{

build.Append(bom.MaterialName);

}

if?(i?>?4)

{

build.Append("-");

}

}

return?build.ToString();

}

protected?void?btnAdd_Click(object?sender,?EventArgs?e)

{

TbBom?bom?=?new?TbBom();

bom.MaterialCode?=?txtMaterialCode.Text.Trim();

bom.MaterialName?=?txtMaterialName.Text.Trim();

bom.PartNo?=?txtPartNo.Text.Trim();

bom.ParentPartNo?=?ddlParentPartNo.SelectedValue;

bom.Qty?=?Convert.ToInt32(txtQty.Text.Trim());

DBBomEntities?eneity?=?new?DBBomEntities();

var?parent?=?eneity.TbBom.Where(p?=>?p.PartNo?==?bom.ParentPartNo).FirstOrDefault();

if?(parent?!=?null)

{

//物料父子集

bom.ParentNos?=?string.Format("{0}{1}",?parent.ParentNos,?bom.PartNo);

}

else

{

//物料父子集

bom.ParentNos?=?string.Format("{0}",?bom.PartNo);

}

eneity.TbBom.Add(bom);

eneity.SaveChanges();

Response.Redirect("index.aspx");

}

}

}

  • 上一篇:ztLogisticRegression 調參 & GridSearchCV
  • 下一篇:紅牛奪寶源代碼
  • copyright 2024編程學習大全網