protected void btnPlan_click(object sender, EventArgs e)
    {
        //首先要查看是否有选中的物料 如果没有选中物料 提示 并且返回
        //Response.Write(this.gridSaleBill.Rows.Count.ToString());
        string ids = "";
        foreach (GridViewRow gvrow in this.gridSaleBill.Rows)
        {
            CheckBox chkId = (CheckBox)gvrow.FindControl("chkId");

            if (chkId.Checked == true)
            {
                string id = this.gridSaleBill.DataKeys[gvrow.RowIndex].Values["id"].ToString();
                ids += id + ",";//使用逗号将数据进行处理
            }

        }
        if (ids == "")
        {
            this.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(\"没有选中任何销售物料\");", true);
            return;
        }
        else
        {

            DtResultNew.Rows.Clear();//将所有的行删除掉 用来解决数据不断重复往上加的问题
            string rowFilterString = "";
            string[] idChoose = ids.Split(',');//将id取出来
            for (int i = 0; i < idChoose.Length - 1; i++)
            {
                rowFilterString += "id = " + idChoose[i] + " or ";
            }

            DtResult.DefaultView.RowFilter = rowFilterString.Remove(rowFilterString.Length - 3, 2);
            DtResultCondtion = DtResult.DefaultView.ToTable();
        }
        //首先是遍历全部的数据
        //生成相应的CpickOutPlan
        //显示出来
        UStockBB stockBB = new UStockBB();
        LMaterialRelationBB materialRelationBB = new LMaterialRelationBB();
        OtherOutInDetailBB otherOutInDetailBB = new OtherOutInDetailBB();
        LMaterialBB materialBB = new LMaterialBB();
        DataSet dsStock = new DataSet();

        DataRow[] drsStock = null;

        foreach (DataRow drStockUpDetail in DtResultCondtion.Rows)
        {
            int needCount = Convert.ToInt32(drStockUpDetail["Number"]);
            string strLineNum = drStockUpDetail["lineNumber"].ToString();//行号
            string strDocEntry = drStockUpDetail["SAPdocEntry"].ToString();//销售订单ID
            string strMaterialNo = drStockUpDetail["MaterialNo"].ToString();
            string U_PCNo = drStockUpDetail["U_PCNo"].ToString();//增加采购合同号

            if (string.IsNullOrEmpty(U_PCNo))
            {
                //找到仓库内的同种物料所在的库位以及数量
                //首先是判断同一个库位下的信息是否能够满足所有的需求
                //不带采购合同号
                dsStock = stockBB.GetVListByGroupOtherWithOutFinanceBillNo("stock.financeBillSortNo='02' and stock.isOutStocking=0 and stock.wareLocatorNo<>''");
                if (dsStock.Tables[0].Rows.Count > 0)
                {
                    drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                        + "' and num>=" + needCount.ToString());
                }
            }
            else
            {
                //带采购合同号
                dsStock = stockBB.GetVListByGroupOtherWithFinanceBillNo("stock.financeBillSortNo='02' and stock.isOutStocking=0 and stock.wareLocatorNo<>''");
                if (dsStock.Tables[0].Rows.Count > 0)
                {
                    drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                       + "' and num>=" + needCount.ToString() + " and financeBillNo='" + U_PCNo + "'");
                }
            }

            if (drsStock.Length == 0)
            {
                if (string.IsNullOrEmpty(U_PCNo))
                {
                    dsStock = stockBB.GetVListByGroupOtherWithOutFinanceBillNo("stock.financeBillSortNo='02' and stock.isOutStocking=0 and stock.wareLocatorNo<>''");
                    if (dsStock.Tables[0].Rows.Count > 0)
                        drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo + "' and num>0");
                }
                else
                {
                    dsStock = stockBB.GetVListByGroupOtherWithFinanceBillNo("stock.financeBillSortNo='02' and stock.isOutStocking=0 and stock.wareLocatorNo<>''");
                    if (dsStock.Tables[0].Rows.Count > 0)
                        drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                        + "' and num>0 and financeBillNo='" + U_PCNo + "'");
                }
            }
            while (needCount > 0)
            {
                #region 原物料拣货

                //2015-08-24修改 在此处增加采购合同号的判断

                if (string.IsNullOrEmpty(U_PCNo))
                {
                    //找到仓库内的同种物料所在的库位以及数量
                    //首先是判断同一个库位下的信息是否能够满足所有的需求
                    //不带采购合同号

                    if (dsStock.Tables[0].Rows.Count > 0)
                    {
                        drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                            + "' and num>=" + needCount.ToString());
                    }
                }
                else
                {
                    //带采购合同号

                    if (dsStock.Tables[0].Rows.Count > 0)
                    {
                        drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                           + "' and num>=" + needCount.ToString() + " and financeBillNo='" + U_PCNo + "'");
                    }
                }

                if (drsStock.Length == 0)
                {
                    if (string.IsNullOrEmpty(U_PCNo))
                    {

                        if (dsStock.Tables[0].Rows.Count > 0)
                            drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo + "' and num>0");
                    }
                    else
                    {

                        if (dsStock.Tables[0].Rows.Count > 0)
                            drsStock = dsStock.Tables[0].Select("materialno='" + strMaterialNo
                            + "' and num>0 and financeBillNo='" + U_PCNo + "'");
                    }
                }

                if (drsStock.Length > 0)
                {
                    //当前库位所拥有该物料的数量
                    int haveCount = Convert.ToInt32(drsStock[0]["num"]);

                    //如果当前库位的物料数量大于备货单所需数量,就保存当前库位
                    DataRow drnew = this.DtResultNew.NewRow();

                    drnew["rowId"] = Guid.NewGuid().ToString();
                    drnew["id"] = 0;

                    if (haveCount >= needCount)
                    {
                        drnew["num"] = needCount;
                    }
                    else
                    {
                        drnew["num"] = haveCount;
                    }

                    drsStock[0]["num"] = Convert.ToInt32(drsStock[0]["num"]) - Convert.ToInt32(drnew["num"]);//库存数量减去已备货数量

                    needCount = needCount - Convert.ToInt32(drnew["num"]);

                    //drnew["stockUpBillNo"] = stockUpBillModel.stockUpBillNo;
                    drnew["palletIndex"] = "1";
                    drnew["wareNo"] = drsStock[0]["wareNo"];
                    drnew["wareLocatorNo"] = drsStock[0]["wareLocatorNo"];
                    drnew["palletNo"] = drsStock[0]["palletNo"];
                    drnew["stockUpMaterialNo"] = strMaterialNo;//备货物料编号
                    drnew["materialNo"] = drsStock[0]["materialNo"];//实际拣货物料编号
                    drnew["instantState"] = "01";
                    drnew["financeBillNo"] = U_PCNo;
                    drnew["docEntry"] = strDocEntry;//销售订单ID
                    drnew["lineNum"] = strLineNum;//行号
                    drnew["isDel"] = false;
                    this.DtResultNew.Rows.Add(drnew);
                    drStockUpDetail["number"] = needCount;//重新赋值拣货数量
                }
                else
                {
                    needCount = 0;
                    // break;
                }

                #endregion 原物料拣货
            }
        }

        OtherOutInBillBB otherOutInBill = new OtherOutInBillBB();
        OtherOutInDetailBB otherOutInDetailBill = new OtherOutInDetailBB();
        string id2 = Request.Params["id"];
        vOtherOutInBillData otherOutInBIllData = otherOutInBill.GetVModel(Convert.ToInt32(id2));
        string SAPDocEntry = otherOutInBIllData.SAPDocEntry;
        string strInfo = "";
        foreach (DataRow otherOutInBillRow in DtResultCondtion.Rows)
        {
            int planNum = 0;
            int factNum = 0;
            DataRow[] myDataRowArray = null;
            if (!string.IsNullOrEmpty(otherOutInBillRow["U_PCNo"].ToString()))
            {
                myDataRowArray = DtResultCondtion.Select("materialNo='"
                    + otherOutInBillRow["materialNo"].ToString() + "' and U_PCNo = '" + otherOutInBillRow["U_PCNo"] + "'");
            }
            else
            {
                myDataRowArray = DtResultCondtion.Select("materialNo='"
                       + otherOutInBillRow["materialNo"].ToString() + "'");
            }
            foreach (DataRow row in myDataRowArray)
            {
                planNum += Convert.ToInt32(row["hadNum"]);
            }
            if (!string.IsNullOrEmpty(otherOutInBillRow["U_PCNo"].ToString()))
            {
                myDataRowArray = this.DtResultNew.Select("materialNo=stockupmaterialNo and materialNo='"
                   + otherOutInBillRow["materialNo"].ToString() + "'and financeBillNo = '" + otherOutInBillRow["U_PCNo"] + "'");
            }
            else
            {
                myDataRowArray = this.DtResultNew.Select("materialNo=stockupmaterialNo and materialNo='"
                   + otherOutInBillRow["materialNo"].ToString() + "'");
            }
            foreach (DataRow row in myDataRowArray)
            {
                factNum += Convert.ToInt32(row["num"]);
            }

            if (planNum != factNum)
            {
                strInfo += "物料【" + otherOutInBillRow["materialNo"].ToString() + "】,计划拣货【"
                    + planNum.ToString() + "】件,实际拣货【" + factNum.ToString() + "】件;";
                btnSubmit.Enabled = false;
            }
        }
        if (strInfo != "")
        {
            this.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(\"当前未完成拣货,不允许保存!提示信息:" + strInfo + "\");", true);
            btnSubmit.Enabled = false;
        }
        BindGridPickOutPlan();
        //}
    }