リピーター コントロールがあり、各項目/行には asp:Checkbox コントロールとその横にボタンがあります。
私の問題は、特定のチェックボックスをオンにして、[ポストバック前] の横にあるボタンをクリックすると、以前にチェックされたチェックボックスの状態 (チェック済み) が [ポストバック後] 保持されることです。しかし、私はそれを保持したくないので、すべてのチェックボックスに対して次のことを行いました:
- チェックボックス (およびリピーター) のビューステート (EnableViewState='false') を無効にしました
- プロパティ Checked="false" を定義
<td> <asp:CheckBox ID="chk_chooseTOL" CssClass="chk_chooseTOL" runat="server" Checked="false" EnableViewState="false" /> </td>
デバッグ モードでリピーターの ItemDataBound イベント中にコード ビハインドからチェックボックスの状態を調べたところ、問題ありません。チェックボックスはどれもチェックされていませんが、最後にページが表示され、以前にチェックしたチェックボックスが残っています。チェック済み。理由がわかりません。
私のチェックボックスの状態を保存しない方法はありますか? (特定の条件での ItemDataBound イベント中にチェック ボックスを無効にするには、チェック ボックスをサーバー側のコントロールにする必要があります)
ありがとうございました
いくつかのコード:
<asp:Repeater ID="rpt_CA" runat="server" DataSourceID="TLDataSource" EnableViewState="false" OnItemDataBound="rpt_CA_OnItemDataBound" ClientIDMode="Static" >
<HeaderTemplate>
<table class="ca_table persist-area" id="rpt_CA">
<thead>
<tr class="tl-header persist-header">
<th>Consultant</th>
<th>Mode</th>
<th></th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="server" Text='<%# Eval("EMPLOYEES.FULLNAME") + " (" + Eval("ID_EMPLOYEE") + ")" %>' />
</td>
<td>
<asp:Button runat="server" Text="Gen" EnableViewState="false" />
</td>
<td>
<asp:CheckBox ID="chk_chooseTOL" CssClass="chk_chooseTOL" runat="server" Checked="false" EnableViewState="false" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
.
protected void rpt_CA_OnItemDataBound(object Sender, RepeaterItemEventArgs Args) {
if (Args.Item.ItemType == ListItemType.Item || Args.Item.ItemType == ListItemType.AlternatingItem)
{ TURNOVER_LINES currentTL = (TURNOVER_LINES)Args.Item.DataItem; RepeaterItem ri = Args.Item;
CheckBox chk_chooseTOL = Args.Item.FindControl("chk_chooseTOL") as CheckBox;
if(currentTL.IS_ALREADY_GEN)
{
chk_chooseTOL.Enabled = false;
}
}
}