我正在开发一个Web应用程序(使用ASP.NET 2.0(C#)和jQuery)
在我的应用程序中,我们有一个界面,我们的员工可以使用该界面输入公司的记录。我们提供了基本字段,公司名称,联系人,电话等界面。现在您知道有些公司有分支机构,有些公司有少数(1到10个),有些公司有很多(100-200个)分支机构。我们还使用jQuery提供了一个动态接口,允许我们的员工根据特定公司的分支机构数量添加分支。
另外,我们使用jQuery的追加函数作为..
$("#branches").append("branch html fields text liek a html input field with id 'Namebranch1' ");
现在,通过添加,我们还提供了一个带有evey分支字段的按钮,用于删除该特定分支。删除我已经使用
$("#branch1").remove()
假设我已经添加了5个分支,然后在提交之前,我觉得不需要输入分支号3,所以我删除了那个分支数据。 所以添加和删除的过程如下,我们添加了
1,2,3,4,5
然后,删除了第3分支,现在有
1,2,4,5
现在因为我们有4个元素,所以每当我的用户添加或删除分支时,我都会分别从javascript变量中添加1和减1。然后在隐藏字段中输入该变量,这样当用户提交数据时,我将拥有正确的计数数,表明用户如何添加任何分支,并且根据此计数,我知道我有多少次必须运行循环以分别追踪所有分支数据。
但问题是当用户提交表单然后我运行循环4次,这意味着什么,我将获得1,2和4分支的数据,但是当它完成4个循环后循环将停止,数据第4分支是4号将失踪。因为当用户将sibmit形式时将发布的元素为(branchName5,branchTitle5等)
我希望你们明白我需要什么?请告诉我这个问题的一些合理解决方案。
由于
答案 0 :(得分:1)
摆脱隐藏的计数器变量,只需遍历Request.Form.Keys寻找分支*。然后,您将只处理以branch开头的任何表单变量。
class Branch { public string Name; public string Title; }
void OnLoad(EventArgs e) {
base.OnLoad(e);
var branches = new Dictionary<int, Branch>();
foreach (string key in Request.Form.Keys) {
if (!key.StartsWith("branch")) continue;
int id;
if (key.StartsWith("branchTitle")) {
id = int.Parse(key.Substring("branchTitle".Length));
branches.Ensure(i).Title = Request.Form[key];
} else if (key.StartsWith("branchName")) {
id = int.Parse(key.Substring("branchName".Length));
branches.Ensure(i).Name = Request.Form[key];
}
}
}
// Ensure extension method
T Ensure<K, T>(this Dictionary<K, T> d, K key) where T:new {
if (!d.ContainsKey(key)) {
d.Add(key, new T());
}
return d[key];
}
答案 1 :(得分:0)
也许这是一个线索?在提交中....
$('#branches').each( function (i) { this.id = 'branch' + i } );