c# - C# 代码在遇到断点时有效,否则在我禁用所有断点时无效 [Winforms]
问题描述
当我尝试调试应用断点时,下面的代码运行完美,但是当我禁用断点并再次运行它时,它不能完美运行。在这里,我正在创建一个非库存项目,现在当它导航到其他页面时,它不会显示所有插入的行。
我试图使提交调用异步并将 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中遇到过这样的问题,是因为我在循环中保存还是我找不到问题,这是一个令人头疼的问题,因为唯一的方法是找到问题是调试但是当我调试代码时它工作正常并且结果显示正常.
此外,数据正确地存储在数据库中,只是没有以导航到的表单正确加载。
解决方案
推荐阅读
- javascript - 我的代码有问题吗?(简单的 JavaScript 查找特殊字符)
- javascript - 如何在流星中简单模式的数组类型字段中加载文档
- python - 如何在 while 循环下获得选择函数以返回不同的结果
- symbolic-math - SAGE:在 SR 基环中分解特征多项式
- unity3d - Unity Animator 如何移除转场
- konvajs - How to set a desired clientRect x and y for a Shape?
- java - 如何不显示 API 的整个对象?
- java - 在Java中更新JSON文件的最简单方法是保留确切格式
- fortran - 运行简单的 hello_world 程序时出错
- conda - 使用 conda 安装魅力无法获取软件包