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 つの選択値が保存されます。データを取得するために、個々のドロップダウン リストをどのように呼び出しますか? 私が実際に尋ねているのは、前の 2 つの質問の自動生成されたドロップダウン リストの作成時に、プログラムで ID を割り当てることができるかどうかということです。

どうすればいいですか?アドバイスやヒントは大歓迎です!!

4

3 に答える 3

1

UpdatePanel を使用して、コード ビハインドに新しい asp コントロールを動的に追加できます。

ただし、これは、ユーザーが「追加」ボタンをクリックするたびにアプリケーションがサーバーに戻ることを意味するため、コストがかかる可能性がありますが、クライアント側でこれを厳密に達成する方法はわかりません。しかし、asp.net を使用してサーバー側でオンザフライで新しいコントロールを作成することを妨げるものは何もありません。

新しいコントロールをカスタム HTML で囲む場合は、PlaceHolder コンポーネントを使用して、コールバック中に生のテキスト (HTML) に置き換えることができます。

于 2013-03-21T09:44:46.253 に答える
1

GridViewを使用することをお勧めします。
行を追加するオプションを提供します。Rows コレクションを提供するため、各行にバインドされたデータを取得できます。

開始するためのいくつかの例を次に示します。

コントロールを動的に作成、追加、および維持するには、ある程度の労力が必要です。PlaceHolder が必要で、それにコントロールを追加する必要があります。それらのそれぞれに一意の ID を割り当て、それらを使用して値を取得する必要があります。これは PostBack ごとに行う必要があります。
asp.net に慣れていないと感じたら、これを試してください。

于 2013-03-21T09:46:52.693 に答える