【问题标题】:Add multiple fields to webform on ASP.Net with just one button click只需单击一键,即可在 ASP.Net 上向 Web 表单添加多个字段
【发布时间】:2018-09-02 03:56:00
【问题描述】:

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

【问题讨论】:

  • 数据绑定中继器会容易得多。在网络表单中使用动态控件很尴尬。
  • 您能否提供一个示例代码或示例来实现此目的?谢谢!
  • 是否可以将添加字段的值发送到 SQL 表?
  • 很抱歉,我无法比您在网上找到的示例和示例做得更好。我已经很多年没有做过网络表单了,所以我必须做一些事情,但我最终还是会自己去谷歌搜索。

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


【解决方案1】:

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

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

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

}

现在添加了所有字段,使用视图状态您可以存储和检索按钮 2 被单击的次数。

回发完成后,所有动态添加的字段都将丢失,因为 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这个字段是否存在,如果存在,添加即可。

问候

马赫什瓦拉

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2010-11-05
    • 1970-01-01
    • 2015-10-23
    • 2017-09-29
    • 2023-04-08
    相关资源
    最近更新 更多