1

ファイルから動的に生成されるフォームに ListBox(multi-selectable) が必要で、送信後も同じフィールドが選択されている必要があります。

これが私が今やっている方法です:

<select name="select" size="20" multiple style="Width: 100%">
  <% Response.WriteFile(@"~\Catalogs\"+usergroup+".htm"); %>
</select>

しかし、この方法では、送信後に選択がなくなります。

誰かが私の問題に対するより良い解決策を持っていますか? (ファイルは必ずしも最終的な HTML ファイルである必要はありません。ファイルから ListBox の値 + テキストを変更できるようにしたいだけです)

よろしくお願いします!

4

1 に答える 1

2

コード ビハインドで項目を動的に生成し、リストに追加できます。そのためには、runat="server"属性をに追加するか、サーバー コントロールselectを使用する必要があります。asp:DropDownList

ファイルの内容を逐語的にリストに挿入しているようです。おそらく、それをより構造化されたデータに変更するか、少なくとも構造化されたデータとして読み取る必要があります。

例:

<%-- in markup of control/page --%>
<asp:DropDownList  runat="server" id="ddlCatalogs" />

// in codebehind

// to make this work, you'll need to read the file one line/item as a time
foreach( var item in listOfItemsInFile ){
    var li = new ListItem();

    // TODO: populate "li" from the item's data

    // add it to the server control's collection...now it's a part of the ASP.Net
    // page lifecycle
    this.ddlCatalogs.Controls.Add( option );
}

ドロップダウンをサーバー コントロールとして扱うと、さまざまな方法で状態を維持できます (デフォルトでは ViewState が処理しますが、リスト内の項目が多いと ViewState は非常に大きくなります)。

または、別の方向に進んで (サーバー コントロールは関係ありません)、生のRequest.Formコレクションを調べて、選択リストのデータが含まれているかどうかを確認し、それをページに書き戻すこともできます。

このシナリオでも、正しいオプションを選択できるように、より構造化された方法で入力ファイルを列挙する必要があるでしょう。

于 2013-02-13T08:32:20.933 に答える