0

我对 ASP.NET 还是很陌生,但我发现自己陷入了一个不应该成为太大问题的问题。

现在我有一个包含这个 div 的页面:

<div id="EditSurveySetID" class="EditSurveySet" runat="server">
        <div class="cell">
                <div class="cell_title">Survey Set(s)</div>
                <table id="surveySetTableData" runat="server" style="margin: 10px;">
                    <tbody>
                        <tr>
                            <td class="form_labelSurveySet" style="width: 330px;">
                                <input type="button" value="-"> Survey Set 1: 
                                <input id="EditSurveySetTitle" runat="server" style="width: 200px;" value="Netherlands">
                            </td>
                            <td>
                                <asp:DropDownList ID="DDLSurveySetSurveys" runat="server">
                                </asp:DropDownList>
                                <asp:Button ID="addAdditionalDDLColumns" runat="server" Text="+" />
                            </td>
                        </tr>
                   </tbody>
            </table>
        </div>
    </div>

看起来像这样: 在此处输入图像描述

我希望用户按下 + 按钮(addAdditionalDDLColumns)。按下该按钮后,我希望出现一个新的表格行,其中包含相同的控件,以便在运行时,此时它看起来像这样:

<div id="EditSurveySetID" class="EditSurveySet" runat="server">
        <div class="cell">
                <div class="cell_title">Survey Set(s)</div>
                <table id="surveySetTableData" runat="server" style="margin: 10px;">
                    <tbody>
                        <tr>
                            <td class="form_labelSurveySet" style="width: 330px;">
                                <input type="button" value="-"> Survey Set 1: 
                                <input id="EditSurveySetTitle" runat="server" style="width: 200px;" value="Netherlands">
                            </td>
                            <td>
                                <asp:DropDownList ID="DDLSurveySetSurveys" runat="server">
                                </asp:DropDownList>
                                <asp:Button ID="addAdditionalDDLColumns" runat="server" Text="+" />
                            </td>
                        </tr>

                        <tr>
                            <td class="form_labelSurveySet" style="width: 330px;">
                                <input type="button" value="-"> Survey Set 2: 
                                <input id="Text1" runat="server" style="width: 200px;" value="Netherlands">
                                </td>
                            <td>
                                <asp:DropDownList ID="DropDownList1" runat="server">
                                </asp:DropDownList>
                                <asp:Button ID="Button1" runat="server" Text="+" />
                            </td>
                        </tr>
                                       </tbody>
            </table>
        </div>
    </div>

或在图像中: 在此处输入图像描述 所以我看到的方式是,在 + 按钮单击事件上生成了一些新的 HTML 代码,以及一些控件(下拉列表、另一个具有相同功能的 + 按钮(?),可能是文本字段而不是输入字段)。

现在想到的问题:

  • 如何生成将创建新表格行的 HTML 代码
  • 如何控制生成的 HTML 代码的添加位置(在这种情况下,它应该在现有的
  • [模糊/抽象问题]最终,用户可能拥有 1 到无限的“调查集”。如果用户要创建 4 个调查集,他最终会按下保存按钮或类似的东西。按下此按钮后,我将保存属于 4 个调查集的 4 个下拉列表的 4 个选定值。我将如何调用每个单独的下拉列表以获取数据?我认为,我实际上要问的是,是否可以在我前两个问题的自动生成的下拉列表创建时以编程方式分配一个 ID。

我该怎么做呢?非常欢迎任何建议和提示!

4

3 回答 3

1

我建议你使用GridView
它提供了添加行的选项。它提供了一个 Rows 集合,因此您可以获取绑定到每一行的数据。

以下是一些帮助您入门的示例。

动态地创建、添加和维护控件需要付出一些努力。您将需要一个 PlaceHolder 并且必须为其添加控件。您必须为它们中的每一个分配唯一的 id,并使用它们来检索值。这必须在每个 PostBack 上完成。
当您不觉得自己对 asp.net 很陌生时,试试这个。

于 2013-03-21T09:46:52.693 回答
1

您可以使用 UpdatePanel 并在代码隐藏中动态添加新的 asp 控件。

但是,这可能会很昂贵,因为这意味着每次用户单击“添加”按钮时您的应用程序都会返回到服务器,但是我不确定您将如何在客户端严格实现这一点。但是没有什么能阻止您使用 asp.net 在服务器端动态创建新控件。

如果您想用自定义 HTML 包围新控件,您可以使用 PlaceHolder 组件并在回调期间将其替换为原始文本(您的 HTML)。

于 2013-03-21T09:44:46.253 回答
0

protected void Button1_Click(对象发送者,EventArgs e)

{

    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();
    Button btn=new Button();
    btn.Text="gdfgd"; /* here u can create ur contol and add it in cell*/
    td.Controls.Add(btn); /*add controls to colum*/
    tr.Cells.Add(td); /*add column to row*/
    surveySetTableData.Rows.Add(tr); /*ad row to table*/
}

而不是使用这个,我还建议你使用像 nunespaqscal bcz dataretrival 这样的 gridview 变得非常容易......在 gridview

于 2013-03-21T10:03:38.867 回答