因此,我有此Silverlight應用程序通過HTML窗體提交調用某些報告(.rdlc)。 這種形式是通用的,所以我用它來調用所有的報告。如何使用Silverlight/C刪除HtmlElement中的所有子項目#
現在我想清除輸入元素在它每次表單已被submited。
所以我希望有一個明確的形式每次我想打電話給在它沒有孩子一份新的報告。
任何人都可以解釋爲什麼當表單中有超過5個(或任何更大的輸入量)輸入時,這不起作用嗎?
public static void RemoveInputsFromForm(HtmlElement Form)
{
if (HtmlPage.Document.GetElementById(Form.Id) != null)
{
foreach (HtmlElement element in Form.Children)
{
if (element.Id != string.Empty)
{
element.Parent.RemoveChild(element);
}
}
}
}
的形式有它的ID和每個輸入具有ID,它隨機移除一些輸入,其他形式留。
這是插入輸入元件化成形成方法:
public static void AddInputToForm(HtmlElement Form, string Name, object Data)
{
if (Data != null && Data.ToString() != string.Empty)
{
var input = HtmlPage.Document.CreateElement("input");
input.SetProperty("type", "hidden");
input.SetProperty("value", Data.ToString());
input.SetProperty("name", Name);
input.SetProperty("id", Name);
Form.AppendChild(input);
}
}
這是我現在使用刪除形式的兒童的方法中,它是相同的,因爲只有,它消除了輸入
AddInputToForm
方法
public static void RemoveInputFromForm(HtmlElement Form, string Name)
{
if (HtmlPage.Document.GetElementById(Name) != null)
{
Form.RemoveChild(HtmlPage.Document.GetElementById(Name));
}
}
這是得到我的形式方法
public static HtmlElement GetForm(string formUrl)
{
//in the html that holds the silverlight object, you must have a form named "reportform"
//<form id="reportform" action="" method="post" target="_blank" style="visibility: collapse" />
HtmlElement functionReturnValue = null;
//set form
functionReturnValue = HtmlPage.Document.GetElementById("reportform");
//set form action
functionReturnValue.SetProperty("action", formUrl);
return functionReturnValue;
}
要重現代碼(SomeElement是字符串屬性的對象):
//get form
var Form = GetForm(ApplicationUrl + @"Reports\Report.aspx");
//add parameters to form
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);
//submit form
Form.Invoke("submit");
//clean report
RemoveInputFromForm(Form, "id1");
RemoveInputFromForm(Form, "id2");
RemoveInputFromForm(Form, "id3");
RemoveInputFromForm(Form, "id4");
RemoveInputFromForm(Form, "id5");
RemoveInputFromForm(Form, "id6");
RemoveInputFromForm(Form, "id7");
RemoveInputFromForm(Form, "id8");
RemoveInputFromForm(Form, "id9");
所以你看我必須刪除所有的孩子,我添加了許多電話,因爲有形式的投入,我想有隻需撥打一個電話,並清除表格。
在此先感謝任何給定的解決方案。
因此,您有一個Silverlight應用程序動態構建HTML表單來檢索RDLC報告?聽起來很酷,我很想看到一個樣本。 – 2011-01-20 08:02:32
您需要的所有代碼都在這篇文章中,您只需讀取包含.rdlc文件的aspx頁面上的請求參數即可。我會序列化對象並在aspx頁面中反序列化它。 – Rumplin 2011-06-15 12:34:07