2012-12-05 156 views
2

我有一箇中繼器控件,每個項目/行都有一個asp:複選框控件和旁邊的一個按鈕。asp repeater複選框狀態保存

我的問題是,如果我檢查給定的複選框並點擊它旁邊的按鈕[回發前],先前選中的複選框的狀態(已選中) 將保留[回發後]。但我不希望它被保存下來,所以我已經做了所有的複選框執行以下操作:

  1. 禁用的視圖狀態(的EnableViewState =「假」)的複選框(和中繼器)的
  2. 定義的屬性選中=「假」
<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; 
      } 

    } 
} 
+0

你在Repeater級別嘗試過'EnableViewState =「False」嗎? –

+1

是的,中繼器具有屬性EnableViewState =「False」,謝謝 – TGI

+1

如果有的話,你可以發佈一些更多的asp代碼和代碼嗎? –

回答

1

把Checked =「false」丟到狀態是不夠的。該值將被表單中的選中狀態覆蓋。爲了防止出現這種情況,您需要在代碼隱藏,page_load事件或之後設置checked = false。

+0

好的,這就是我所做的(用JS代替代碼隱藏)。謝謝。 – TGI