只需单击一下按钮,就可以在ASP.Net上将多个字段添加到webform

时间:2018-03-23 12:58:07

标签: javascript c# html asp.net visual-studio

我在ASP.Net(Visual Studio)中有一个webform。我在表单上有两个按钮,一个按钮(按钮1)提交表单,另一个按钮(按钮2)将用于向表单添加其他字段。我希望能够单击按钮2,只需单击一下即可添加当前在表单上的所有字段。用户还应该能够添加多达20个这样的附加字段集。谢谢!

1 个答案:

答案 0 :(得分:0)

我正在使用WebForms,但使用的是VB.Net。我将尝试指导您完成这些步骤,但您必须使用c#的语法。

基本上,所有ASP:按钮都会提交表单。你的意思是,当你按下button2时,应该有一个方法处理按钮2。在该方法中,您可以创建动态控件。例如:

protected sub addFields()处理button2.click {

   Dim field1 as type;

   Dim field2 as type;

   set properties of the fields;


   //you need to place a placeholder on the aspx page

   id_of_placeholder.controls.add(field1); -> so on

}

现在添加了所有字段,使用viewstate可以存储和检索button2被点击的次数。

当回发完成后,所有动态添加的字段都将丢失,因为ASP.Net仅跟踪aspx页面上的控件。您需要在page_load方法上重建它们(通过知道用户点击button2的次数,您可以创建一个循环并重新添加字段)。因为动态添加的控件丢失了,所以它们保存的数据也会丢失!在aspx页面上使用ASP:HiddenField,以便javascript可以将用户选择的数据放入其中。

伪代码: JS:

for each field {
    //clientidmode = "static" can be used to make the id of hiddenfield predicatable
    getHiddenField.text = getHiddenField.text + field.text + ",";
}

C#: page_load方法{

get viewstate containing button2 clicks;
string userdata = hiddenfield.text

for i = 0 to clicks - 1 {
    add fields
    //comma used as data seperator
    for i = 0 to fieldscount {
        //field(i) standing for each field
        //substring, so we get the first data and assign it to field
        field(i).data = userdata.substring(0, userdata.firstIndexOf(","));
        //now delete the retrieved data, so we can loop
        userdata.removeTheDataBeforeFirstComma;
    }
}

}

在此之后,您应该能够动态添加控件,显示它们并在回发时检索它们的数据。

当您到达此点时,尝试将字段存储在Viewtate中。这样,不需要使用hiddenfields,只需查看Viewtate字段是否存在,如果是,则添加它们。

此致

Maheshvara

相关问题