おはようございます。私は、リピーターと動的オブジェクトのリストを持つシンプルなWebサイトでなければならないものを扱っています。私は4つの他のオブジェクトの4つのリストプロパティを含む親オブジェクトを使ってデータをセットアップしました。動的オブジェクトリストをリピータコントロールにバインド
要求(親)
- イベント
- フライト
- ホテル
カー
ページが最初に一つのオブジェクトにロードし、ここでされて何が起こる<asp:Repeater ID="rptEvent" runat="server" EnableViewState="false"> <ItemTemplate> <table class="tableStyle"> <tr> <td colspan="4" class="headerLabel"> CLIENT EVENT INFORMATION - <%# Eval("ProjectName") %> </td> </tr> <tr> <td class="regLabel row1">Company Name: (If Billable)</td> <td colspan="3" class="row1"> <asp:DropDownList ID="cboClientName" runat="server" AutoPostBack="true" CssClass="dropDownClass1" DataSource='<%# Eval("ClientName") %>' SelectedValue='<%# Eval("SelectedClientName") %>' ClientIDMode="Static" OnSelectedIndexChanged="cboClientName_SelectedIndexChanged"></asp:DropDownList> </td> </tr> [...more items...] </table> <asp:Panel runat="server" ID="pnlAdd" Visible="<%# Container.ItemIndex + 1 == tempRequest.events.Count && tempRequest.events.Count < 3 %>"> <asp:Label runat="server" CssClass="regLabel" Text="Would you like to add another destination? " /> <asp:CheckBox ID="inptAdditionalInfo" AutoPostBack="true" runat="server" OnCheckedChanged="inptAdditionalInfo_CheckedChanged" /><br /><br /> </asp:Panel> </ItemTemplate> </asp:Repeater>
それぞれのプロパティリストとすべてが素晴らしいと素晴らしいです。各オブジェクトには、異なるプロパティタイプが含まれています。文字列のリスト、個々の文字列のプロパティ、dateTimeのプロパティなど。私は、これらの値をオブジェクトにバインドするための正しい構文だと思っています。ただし、ユーザーがチェックボックスをオンにしてアイテムを追加するときに問題が発生します。
何かが起こる前にページがリロードされ、初期データの「再起動」が作成され、データは保持されません。私は正しく動作すると思っていたコードの中にアップデートメソッドを持っています。
protected void UpdateRequest() {
for (int i = 0; i <= tempRequest.events.Count - 1; i++)
{
// Set the Event ===============================================================================
var temp = (DropDownList)rptEvent.Items[i].FindControl("cboClientName");
tempRequest.events[i].SelectedClientName = temp.SelectedItem.ToString();
これは機能しません。永続データが取得されません。各リピータコントロールの値を適切なオブジェクトの適切な項目に正しくバインドするにはどうすればよいですか? IE:ClientNameはリピータの2番目のインデックスからオブジェクトリストの2番目のインデックスまでですか?
私はこの質問に十分な情報を与えていただきたいと思います。