/// <summary>
        /// DataTable 转对象
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static MarerialInfoTable ConvertDataTableToModel(string sql)
        {
            error = string.Empty;
            DataTable         dt           = SqlHelper.GetTable(sql, ref error);
            DataRow           dr           = dt.Rows[0];
            MarerialInfoTable marerialinfo = new MarerialInfoTable();

            marerialinfo.MaterialNumber   = dr["MaterialNumber"] == null ? "" : dr["MaterialNumber"].ToString();
            marerialinfo.MaterialName     = dr["MaterialName"] == null ? "" : dr["MaterialName"].ToString();
            marerialinfo.Description      = dr["Description"] == null ? "" : dr["Description"].ToString();
            marerialinfo.Kind             = dr["Kind"] == null ? "" : dr["Kind"].ToString();
            marerialinfo.Type             = dr["Type"] == null ? "" : dr["Type"].ToString();
            marerialinfo.Brand            = dr["Brand"] == null ? "" : dr["Brand"].ToString();
            marerialinfo.StockSafeQty     = Convert.ToInt32(dr["StockSafeQty"] == null ? "" : dr["StockSafeQty"].ToString());
            marerialinfo.ProcurementPrice = Convert.ToDecimal(dr["ProcurementPrice"] == null ? "" : dr["ProcurementPrice"].ToString());
            marerialinfo.MaterialPosition = dr["MaterialPosition"] == null ? "" : dr["MaterialPosition"].ToString();
            marerialinfo.MinPacking       = dr["MinPacking"] == null ? "" : dr["MinPacking"].ToString();
            marerialinfo.MinOrderQty      = dr["MinOrderQty"] == null ? "" : dr["MinOrderQty"].ToString();
            marerialinfo.ScrapPosition    = dr["ScrapPosition"] == null ? "" : dr["ScrapPosition"].ToString();
            marerialinfo.Remark           = dr["Remark"] == null ? "" : dr["Remark"].ToString();
            marerialinfo.Cargo            = dr["Cargo"] == null ? "" : dr["Cargo"].ToString();
            marerialinfo.SixStockSafeQty  = dr["SixStockSafeQty"] == null ? "" : dr["SixStockSafeQty"].ToString();
            marerialinfo.CargoType        = dr["CargoType"] == null ? "" : dr["CargoType"].ToString();
            marerialinfo.NumberProperties = dr["NumberProperties"] == null ? "" : dr["NumberProperties"].ToString();
            marerialinfo.Unit             = dr["Unit"] == null ? "" : dr["Unit"].ToString();
            return(marerialinfo);
        }
        /// <summary>
        /// 编辑原材料信息
        /// </summary>
        /// <param name="user"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public static bool EditMarerialInfoTable(MarerialInfoTable maretialinfotable, ref string error)
        {
            if (!IsExit(maretialinfotable.MaterialNumber))
            {
                error = "不存在该原材料编号!请重新填写!";
                return(false);
            }
            List <string> list = new List <string>();

            sql = string.Format(@" update MarerialInfoTable set MaterialName='{0}',
Description='{1}',Kind='{2}',Type='{3}',Brand='{4}',StockSafeQty={5},ProcurementPrice='{6}'
,MaterialPosition='{7}',MinPacking='{8}',
MinOrderQty='{9}',ScrapPosition='{10}',Remark='{11}' ,CargoType='{13}',NumberProperties='{14}',Unit='{15}'
where MaterialNumber='{12}'", maretialinfotable.MaterialName,
                                maretialinfotable.Description, maretialinfotable.Kind, maretialinfotable.Type,
                                maretialinfotable.Brand, maretialinfotable.StockSafeQty, maretialinfotable.ProcurementPrice,
                                maretialinfotable.MaterialPosition, maretialinfotable.MinPacking, maretialinfotable.MinOrderQty,
                                maretialinfotable.ScrapPosition, maretialinfotable.Remark, maretialinfotable.MaterialNumber, maretialinfotable.CargoType, maretialinfotable.NumberProperties, maretialinfotable.Unit);
            list.Add(sql);
            sql = string.Format(@" update Product  set CostPrice =(select sum(bom.SingleDose*mit.ProcurementPrice ) from BOMInfo bom 
inner join MarerialInfoTable mit on bom.MaterialNumber =mit.MaterialNumber
 where bom.ProductNumber =p.ProductNumber and bom.Version =p.Version 
 group by bom.ProductNumber , bom.Version  )  from Product  p 
inner join (
select ProductNumber ,Version  from BOMInfo  where  MaterialNumber  ='{0}') t on 
p.ProductNumber=t.ProductNumber  and p.Version =t.Version ", maretialinfotable.MaterialNumber);
            list.Add(sql);
            return(SqlHelper.BatchExecuteSql(list, ref error));
        }
        private void LoadPage()
        {
            string sql   = string.Empty;
            string error = string.Empty;

            //MarerialInfoTableManager.BindKind(drpKind);
            //ControlBindManager.BindDrp(" select type from MareriaType", drpType, "type", "type");
            //MarerialInfoTableManager.BindWarehouseName(drpMaterialPosition);
            if (ToolManager.CheckQueryString("Id"))
            {
                sql = string.Format(@" select * from MarerialInfoTable where MaterialNumber='{0}' ", Server.UrlDecode(ToolManager.GetQueryString("Id")));
                //sql = string.Format(@" select * from MarerialInfoTable where MaterialNumber='{0}' ", "test2");
                this.trMaterialNumber.Visible = false;
                MarerialInfoTable marerialinfotable = MarerialInfoTableManager.ConvertDataTableToModel(sql);
                this.txtMaterialNumber.Text   = marerialinfotable.MaterialNumber;
                this.txtMaterialName.Text     = marerialinfotable.MaterialName;
                this.txtDescription.Text      = marerialinfotable.Description;
                this.txtUnit.Text             = marerialinfotable.Unit;
                this.txtNumberProperties.Text = marerialinfotable.NumberProperties;
                this.txtKind.Text             = marerialinfotable.Kind;
                this.txtType.Text             = marerialinfotable.Type;
                //MarerialInfoTableManager.BindType(drpKind, drpType);
                //this.drpType.SelectedValue = marerialinfotable.Type;

                this.txtBrand.Text = marerialinfotable.Brand;
                //this.txtStockSafeQty.Text = marerialinfotable.StockSafeQty.ToString();
                this.txtProcurementPrice.Text = marerialinfotable.ProcurementPrice.ToString();

                this.drpMaterialPosition.SelectedValue = marerialinfotable.MaterialPosition;

                this.txtMinPacking.Text             = marerialinfotable.MinPacking;
                this.txtMinOrderQty.Text            = marerialinfotable.MinOrderQty;
                this.drpScrapPosition.SelectedValue = marerialinfotable.ScrapPosition;
                this.txtRemark.Text    = marerialinfotable.Remark;
                this.txtCargo.Text     = marerialinfotable.Cargo;
                this.txtCargoType.Text = marerialinfotable.CargoType;
                btnSubmit.Text         = "修改";
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            Regex r  = new Regex(@"[\u4e00-\u9fa5]+");
            Match mc = r.Match(txtMaterialNumber.Text.Trim());

            if (mc.Length != 0)
            {
                lbSubmit.Text = "注意:原材料编号禁止输入中文";
                lbSubmit.Focus();
                return;
            }
            string error = string.Empty;

            Model.MarerialInfoTable marerialinfotable = new MarerialInfoTable();
            marerialinfotable.MaterialNumber   = this.txtMaterialNumber.Text.Trim();
            marerialinfotable.MaterialName     = this.txtMaterialName.Text.Trim();
            marerialinfotable.Description      = this.txtDescription.Text.Trim();
            marerialinfotable.Kind             = this.txtKind.Text;
            marerialinfotable.Type             = this.txtType.Text;
            marerialinfotable.Brand            = this.txtBrand.Text.Trim();
            marerialinfotable.Cargo            = this.txtCargo.Text.Trim();
            marerialinfotable.CargoType        = this.txtCargoType.Text.Trim();
            marerialinfotable.NumberProperties = this.txtNumberProperties.Text.Trim();
            marerialinfotable.Unit             = this.txtUnit.Text.Trim();
            bool result = false;

            //if (this.txtStockSafeQty.Text.Trim().Length > 0 && this.txtProcurementPrice.Text.Trim().Length > 0)
            //{
            //    marerialinfotable.StockSafeQty = Convert.ToInt32(this.txtStockSafeQty.Text.Trim());
            //    marerialinfotable.ProcurementPrice = Convert.ToDecimal(this.txtProcurementPrice.Text.Trim());
            //}
            //else
            //{
            //    lbSubmit.Text = "原材料信息不完整!";
            //    return;
            //}
            marerialinfotable.StockSafeQty     = 0;
            marerialinfotable.ProcurementPrice = Convert.ToDecimal(this.txtProcurementPrice.Text.Trim());
            marerialinfotable.MaterialPosition = this.drpMaterialPosition.SelectedValue;
            marerialinfotable.MinPacking       = this.txtMinPacking.Text.Trim();
            marerialinfotable.MinOrderQty      = this.txtMinOrderQty.Text.Trim();
            marerialinfotable.ScrapPosition    = this.drpScrapPosition.SelectedValue.Trim();
            marerialinfotable.Remark           = this.txtRemark.Text.Trim();
            if (btnSubmit.Text.Equals("添加"))
            {
                result        = MarerialInfoTableManager.AddMarerialInfoTable(marerialinfotable, ref error);
                lbSubmit.Text = result == true ? "添加成功!" : "添加失败,原因:" + error;
                if (result)
                {
                    Tool.WriteLog(Tool.LogType.Operating, "增加原材料信息" + marerialinfotable.MaterialNumber, "增加成功");
                    ToolCode.Tool.ResetControl(this.Controls);
                    return;
                }
                else
                {
                    Tool.WriteLog(Tool.LogType.Operating, "增加原材料信息" + marerialinfotable.MaterialNumber, "增加失败!原因" + error);
                    return;
                }
            }
            else
            {
                result        = MarerialInfoTableManager.EditMarerialInfoTable(marerialinfotable, ref error);
                lbSubmit.Text = result == true ? "修改成功!" : "修改失败:原因:" + error;
                if (result)
                {
                    Tool.WriteLog(Tool.LogType.Operating, "编辑原材料信息" + marerialinfotable.MaterialNumber, "编辑成功");
                    return;
                }
                else
                {
                    Tool.WriteLog(Tool.LogType.Operating, "编辑原材料信息" + marerialinfotable.MaterialNumber, "编辑失败!原因" + error);
                    return;
                }
            }
        }