【发布时间】:2019-10-25 04:34:47
【问题描述】:
目前,我正在开发一个允许员工订购靴子的系统,其中部分流程需要特殊用户的批准才能完全处理订单。
用户应从下拉列表中选择未完成的订单,查看订单信息,并(在相关员工的批准下)提交订单。我注意到的是,如果您从加载到 DDL 的数据库中删除订单,或者将订单编辑到没有任何理由加载到 DDL 中的位置,则从 DDL 加载的 ListItem 会感到困惑和说“位置 0 处没有行”(参见下面的代码)。
原因在于 DDL 的数据加载到 DataTable 中的方式——然后加载到 ListItem 中。因为单个贷款的 ID 用于将所有贷款信息加载到 DataTable 中,所以该 ID 还负责充当 DDL 中的贷款索引。因此,编辑或删除外借会导致 DDL 中出现 ListItem 预计会被其他内容占用的空间。至少据我所知,这就是错误的来源。
此数据将加载到的面板中存在多个元素。在我试图规避“位置 0 处没有行”错误时,我尝试设置一个也等于 DDL 的 SelectedIndex 的整数。从那里,我尝试将该整数插入到 ListItem 中,但这只会导致相同类型的错误——Visual Studio 坚持认为该位置没有任何内容。
当有人在订单 DDL 中选择了某些东西后,他们将单击一个按钮,该按钮将打开一个包含所有订单信息的弹出窗口。以下是弹出窗口出现后发生的情况:
SqlCommand cmd = new SqlCommand("loanProc", sc);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
string blNo = ddlBootLoanSel.SelectedIndex.ToString();
DataTable dt = CompC.LoadData("loanProc", sc, new string[] { "id" }, new string[] { blNo });
如前所述:贷款的 ID 正在加载到数据表中。 我还应该在这里提到 CompC 及其方法。该方法的工作方式是它接受以下参数:
- 要执行的存储过程
- SQL 连接字符串
- 将添加到存储过程的字符串数组;在这种情况下,如果我要更新相关表,我需要插入 ID,并且
- 字符串参数,如#3,将被添加到过程中。 CompC.LoadData 将从这里获取过程结果并将它们加载到表中。
ListItem li = new ListItem(dt.Rows[0][0].ToString(), dt.Rows[0][8].ToString());
ddlFinFullName.Items.Add(li);
lblFinPartNo.Text = dt.Rows[0][1].ToString();
// Can't use a Boolean here because this code will need to work with SQL Server
if (dt.Rows[0][2].ToString() == "1")
chkFinDiscount.Checked = true;
else
chkFinDiscount.Checked = false;
lblFinACost.Text = dt.Rows[0][3].ToString();
lblFinDesc.Text = dt.Rows[0][4].ToString();
lblFinLastMod.Text = dt.Rows[0][5].ToString();
if (dt.Rows[0][6].ToString() == "")
lblFinAmt.Text = "None";
else
lblFinAmt.Text = dt.Rows[0][6].ToString();
lblFinTP.Text = dt.Rows[0][7].ToString();
if (dt.Rows[0][8].ToString() == "1")
chkFinHF.Checked = true;
else
chkFinHF.Checked = false;
sc.Close();
lblFinID.Text = blNo;
我希望这会加载所选人员的所有必要信息 - 但相反(如果它没有出错),弹出窗口会显示此人的姓名错误,除非所选人员在下面的索引一个数字上被删除的贷款。对于该会话的其余部分(再次:假设弹出窗口没有出错),每当我为任何其他人打开弹出窗口时,一个错误的人的名字将始终出现在弹出框中。 我还认为每次按下主动按钮时 ListView 都没有刷新可能存在问题,但我发现没有任何方法可以使用单个命令清除 ListView - 无论如何,这样的功能会无论如何,在这种情况下是不必要的。
【问题讨论】:
标签: c# asp.net sql-server visual-studio drop-down-menu