【发布时间】:2013-08-23 03:22:44
【问题描述】:
这一定很容易......但我还是一样。
问题来了:
在一个可能在任何新标准发明之前创建的 ASP.net 项目中,存在两个 HTML 列表框,我们称它们为 listBox A 和 listBox B强>。通过 HTML,我的意思是他们使用 HTML 标签,而不是 ASP 标签:
<select name="listBoxB" id = "listBoxB" size="15" >
<option>--------Selected Approvers--------</option>
<%
SQLDataFactory.WorkflowApproversGroupDetails SQLDFSelectedApprovers = new SQLDataFactory.WorkflowApproversGroupDetails();
DataTable dt1 = SQLDFSelectedApprovers.GetApproversGroupDetails(Request);
foreach (DataRow row1 in dt1.Rows)
{
if (row1["ID"].ToString().Equals(Request.Form["listBoxB"]))
Response.Write("<option selected value='" + row1["ID"].ToString() + "'>" + row1["EMPNONAME"].ToString() + "</option>");
else
Response.Write("<option value='" + row1["ID"].ToString() + "'>" + row1["EMPNONAME"].ToString() + "</option>");
}
dt1.Dispose();
%>
</select>
listBox B 只真正从数据库中获取数据。
listBox A 包含更完整的数据集(也是从数据库中获取的,不同的表)。该表单允许用户通过添加和删除按钮将数据从 A 传输到 B。添加和删除按钮只使用插入或删除语句。 这很好用。
但是,有一个错误。即,您可以多次将列表框 A 中的数据添加到列表框 B 中。这是不允许的。
我提出的解决方案的逻辑如下:
按下“添加”按钮后,将循环遍历列表框 B 的所有项目。如果它已经包含要添加的项目,则不会向数据库添加任何内容,因此,列表框 B 将不显示任何新内容。否则,它会将项目添加到数据库中,这也会更新 listBox B 的列表。按原样移除支撑。
听起来简单又足够,是吗?我遇到了一些障碍。
如何检索两个列表框项(A 中的选定项,B 中的所有项)?
我是否做一个 Request.Form["listBox B"],通过 For 循环运行它,然后将它添加到数组中?为此,我可能还需要 listBox B 项目计数。我如何获得这些东西?
此外,没有 LINQ。我只被允许使用 .NET 2.0,所以我想我将不得不找到其他方法来比较 A 中的选定项目与 B 中的项目列表。我正在查看以下内容:
int index = Array.FindIndex(itemB, delegate(string s) { return s.Equals(test); });
其中 itemB 是 listBox B 中的项目数组,s 是 listBox A 中选定的项目。
谢谢。
【问题讨论】:
-
+1 因为我为你在 2013 年不得不使用 .NET 2.0 感到难过。
-
是的,好吧,我只能使用可用的工具添加到软件中 - 不能对它进行太多修改,以至于客户应该推出一组新的需求。