(.rdlc)。这个表格是通用的,所以我用它来调用所有报告。现在我想在每次提交时清除表单中的输入元素。所以每当我想要一个没有孩子的新报告时,我想要一个清晰的表格。任何人都可以解释为什么在表单中输入超过5个(或更多输入)时这不起作用吗?publicstaticvoidRemoveInputsFromForm(HtmlElementForm){if(HtmlPage.Document.GetElementById(Form.Id)!=null){foreach(Form.Children中的HtmlElement元素){if(element.Id!=string.Empty){元素。Parent.RemoveChild(元素);}}}}表单有ID,每个输入都有一个ID,它随机删除一些输入,其他的保留在表单中。以下是将输入元素插入到该表单中的方法:Document.CreateElement("输入");input.SetProperty("类型","隐藏");input.SetProperty("值",Data.ToString());input.SetProperty("姓名",姓名);input.SetProperty("id",姓名);Form.AppendChild(输入);这是我现在用来删除子表单的AddInputToForm方法,它与AddInputToForm方法相同,只是删除输入publicstaticvoidRemoveInputFromForm(HtmlElementForm,stringName){if(HtmlPage.Document.GetElementById(Name)!=null){Form.RemoveChild(HtmlPage.Document.GetElementById(Name));}}这是获取我的表单的方法publicstaticHtmlElementGetForm(stringformUrl){//在保存silverlight对象的html中,您必须有一个名为“reportform”的表单//HtmlElementfunctionReturnValue=null;//设置表单functionReturnValue=HtmlPage.Document.GetElementById("reportform");//设置表单动作函数ReturnValue.SetProperty("动作",formUrl);返回函数返回值;}要重现代码(SomeElement是一个具有字符属性的对象)://getformvarForm=GetForm(ApplicationUrl+@"ReportsReport.aspx");//给表单添加参数AddInputToForm(Form,"id1",SomeElement.Id1Value);AddInputToForm(Form,"id2",SomeElement.Id2Value);AddInputToForm(Form,"id3",SomeElement.Id3Value);AddInputToForm(Form,"id4",SomeElement.Id4Value);AddInputToForm(Form,"id5",SomeElement.Id5Value);AddInputToForm(Form,"id6",SomeElement.Id6Value);AddInputToForm(Form,"id7",SomeElement.Id7Value);AddInputToForm(Form,"id8",SomeElement.Id8Value);AddInputToForm(Form,"id9",SomeElement.Id9Value);//提交表单Form.Invoke("submit");//清除报告RemoveInputFromForm(Form,"id1");RemoveInputFromForm(Form,"id2");RemoveInputFromForm(Form,"id3");RemoveInputFromForm(Form,"id4");RemoveInputFromForm(Form,"id5");RemoveInputFromForm(Form,"id6");RemoveInputFromForm(Form,"id7");从F中移除输入orm(表格,“id8”);RemoveInputFromForm(Form,"id9");所以你看我必须为我添加的每个孩子删除尽可能多的调用,因为表单中有输入,我只想要一个调用并清理该表单提前感谢任何给定的解决方案。在foreach循环中,您不应添加或删除元素,因为集合会更改并使循环无效。相反,将所有要删除的项目添加到单独的列表中,然后在第二个循环中删除它们。(我没有测试它,因为我没有它的示例代码,但这是foreach循环的一个常见错误。)ListtoRemove=newList();foreach(Form.Children中的HtmlElement元素){if(element.Id!=string.Empty){toRemove.Add(element);}}foreach(toRemove中的HtmlElement元素){Form.RemoveChild(元素);或者,使用第二种方法,您始终可以将所有id添加到列表中,然后添加循环遍历元素的RemoveAllFormInputs()方法。Peet已经提供了正确的答案,但有些人可能更喜欢基于Linq的方法,这样可以简化代码。以上是C#学习教程:如何使用Silverlight/C#删除HtmlElementinForm.Children.OfType.Where(e=>!String.IsNullOrEmpty(e.Id)).ToList()){Form.RemoveChild(元素);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
