Код C # работает, когда он достигает точки останова, иначе нет, когда я отключаю все точки останова [Winforms] - PullRequest
0 голосов
/ 19 февраля 2019

Мой код ниже работает отлично, когда я пытаюсь отладить применение точки останова, но когда я отключаю точки останова и запускаю его снова, он не работает идеально.Здесь я создаю нестандартный элемент, теперь, когда он переходит на другую страницу, он не показывает все вставленные строки.

Я попытался сделать асинхронный вызов отправки и поместил SaveNonStockItems () в ожидании, но этого не произошлоработа

    private void btnSubmit_Click(object sender, EventArgs e)
    {
        StringBuilder quoteDetailIDs = new StringBuilder();
        foreach (DataGridViewRow dataGridViewRow in grdQuoteDetail.Rows)
        {
            if (dataGridViewRow.Cells["colSelected"].Value != null &&
                dataGridViewRow.Cells["colSelected"].Value != DBNull.Value &&
                (bool)dataGridViewRow.Cells["colSelected"].Value)
            {
                quoteDetailIDs.Append(dataGridViewRow.Cells["colQuoteDetailID"].Value + ", ");
            }
        }
        StringBuilder quoteDetailIDsNonStock = new StringBuilder();
        if(SaveNonStockItems())
        {
            foreach (DataGridViewRow dataGridViewRow in grdNonStocks.Rows)
                {
                    if (dataGridViewRow.Cells["colSelectedNonStock"].Value != null &&
                        dataGridViewRow.Cells["colSelectedNonStock"].Value != DBNull.Value &&
                        (bool)dataGridViewRow.Cells["colSelectedNonStock"].Value)
                    {
                        quoteDetailIDsNonStock.Append(dataGridViewRow.Cells["colQuoteDetailID2"].Value + ", ");
                    }
                }
                //  Remove trailing ', '
                quoteDetailIDs.Append(quoteDetailIDsNonStock.ToString());
                quoteDetailIDs.Remove(quoteDetailIDs.Length - 2, 2);

                Guid orderID = Guid.Empty;
                try
                {
                    BeginInit("Converting " + _quotesModule.QuoteTypeInfo.TypeName + "# " + _quotesModule.QuoteHeader[0].QuoteHeaderID + " To Order..."); 
 _quotesModule.ConvertToOrder(_quotesModule.QuoteHeader[0].QuoteHeaderID, _quotesModule.QuoteHeader[0].CustTreeNodeID,Guid.Empty,_quotesModule.QuoteHeader[0].SupplyChainNodeID, txtPONumber.Text, quoteDetailIDs.ToString(),
                    chkCopyItemNotes.Checked, rdoOpenOrder.Checked ? 1 : 2,
                    rdoOpenOrder.Checked ? 0 : ctrlVendor.SelectedSupplyChainNodeID,
                    ref orderID, SessionModule.Current.User.UnityUserID);  
                    EndInit();
                    Global.AppResume();
                    if (orderID != Guid.Empty)
                    {
                        Navigate.ReOpenOrder(orderID);
                    }
                    DialogResult = DialogResult.OK;
                }
                catch (Exception ex)
                {
                    ErrorDialog.DisplayModal(ex);
                    EndInit();
                    Global.AppResume();
                    DialogResult = DialogResult.Cancel;
                }
        }

    private bool SaveNonStockItems()
    {
        if (grdNonStocks.Rows.Count > 0)
        {
            foreach (DataGridViewRow dataGridViewRow in grdNonStocks.Rows)
            {
                if (dataGridViewRow.Cells["colSelectedNonStock"].Value != null &&
                    dataGridViewRow.Cells["colSelectedNonStock"].Value != DBNull.Value &&
                    (bool)dataGridViewRow.Cells["colSelectedNonStock"].Value)
                {
                    string xml = CreateXml(dataGridViewRow);
                    if (xml != string.Empty)
                    {
                        try
                        {
                            int _skuID = ProductMaint.CreateNonStockingSku(xml, SessionModule.UserID); //Proc that inserts this
                            /* capture the item number for adding to the order (hack-ish) */
                            dataGridViewRow.Cells["colSkuID"].Value = _skuID;
                        }
                        catch (MercuryException mex)
                        {
                            /* non-stock creation failed */
                            ErrorDialog.DisplayModal("Non-stock creation failed.", mex.Message, true);
                            throw mex;

                        }
                    }
                    else
                    {
                        ErrorDialog.DisplayModal("Failed to generate creation parameters.");
                        return false;
                    }
                }
            }
        }
        return true;
    }

    private string CreateXml(DataGridViewRow dataGridViewRow)
    {
        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
        System.Xml.XmlNode root = doc.CreateElement("NonStockingSku");
        System.Xml.XmlNode sku = doc.CreateElement("Sku");
        System.Xml.XmlAttribute attr = null;


        doc.AppendChild(root);
        root.AppendChild(sku);
        attr = doc.CreateAttribute("ItemNumber");
        attr.Value = dataGridViewRow.Cells["colItemNumber2"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("Description");
        attr.Value = dataGridViewRow.Cells["colItemDescription2"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("ProductTypeID");
        attr.Value = dataGridViewRow.Cells["colType"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("ProductLineID");
        attr.Value = dataGridViewRow.Cells["colProductLine"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("ProductDepartmentID");
        attr.Value = dataGridViewRow.Cells["colDepartment"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("Landed");
        attr.Value = dataGridViewRow.Cells["colLanded"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("VendorSupplyChainNodeID");
        attr.Value = dataGridViewRow.Cells["colVendor"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("ListPrice");
        attr.Value = dataGridViewRow.Cells["colListPrice"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("Cost");
        attr.Value = dataGridViewRow.Cells["colCost"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("QuoteDetailID");
        attr.Value = dataGridViewRow.Cells["colQuoteDetailID2"].Value.ToString();
        sku.Attributes.Append(attr);

        attr = doc.CreateAttribute("Quantity");
        attr.Value = dataGridViewRow.Cells["colQuantity"].Value.ToString();
        sku.Attributes.Append(attr);



        return doc.OuterXml;

    }
}      
public static int CreateNonStockingSku(string parametersXml, int unityUserID)
    {
        Proc p = new Proc("NonStockingSku_i");
        p["@ParametersXml"] = parametersXml;
        p["@UnityUserID"] = unityUserID;
        p.Exec();

        int skuID;
        string message;

        if (p["@SkuID"] != DBNull.Value)
        {
            skuID = (int)p["@SkuID"];
            return skuID;
        }
        else
        {
            if (p["@Message"] != DBNull.Value)
            {
                message = p["@Message"].ToString();
            }
            else
            {
                message = "Unspecified error.";
            }
            throw new MercuryException(message);
        }
    }

Я просто хочу знать резонанс, чтобы он вел себя так.Я никогда не сталкивался с такой проблемой в winforms, это потому, что я сохраняю в цикле или что я не могу найти проблему, это только головная боль, потому что единственный способ найти проблему отладки, однако, когда я отлаживаю код, он работает нормально, и результаты показывают нормально.

Кроме того, данные правильно сохраняются в БД, они просто не загружаются правильно в той форме, к которой они переходят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...