2011-12-09 63 views
1

我有一箇中繼器,裏面有一個複選框。現在我想根據列值(0/1)來檢查它。我已經通過中繼器的itemDataBound事件嘗試過了。如果行的值爲1,那麼它在做什麼,然後檢查所有的複選框,如果第一個複選框沒有被選中,那麼它的未選中的全部。 我的代碼是: - ` 如何根據值在綁定時間檢查中繼器內的複選框?

    <td align="center"> 
         <asp:CheckBox ID="chk" runat="server" /> 
        </td> 
       </tr> 
      </ItemTemplate> 
     </asp:Repeater>` 

該事件的ItemDataBound代碼爲: -

protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt = obj.abc(id); 
    if (dt.Rows.Count > 0) 
    { 
     CheckBox chk = (CheckBox)(e.Item.FindControl("chk")); 
     if (chk != null) 
     { 

      if (Convert.ToInt32(dt.Rows[0]["xyz"]) == Convert.ToInt32("0")) 
      { 
       chk.Checked = false; 
      } 
      else 
      { 
       chk.Checked = true; 

      } 
     } 

    } 

} 

回答

3

有很多方法可以做到這一點。

  1. 您可以編寫內聯ASP.NET:

    <asp:CheckBox id='isMarried' runat='server' 
    Checked='<%# Convert.ToBool(Eval("IsMarried")) ? true : false %>' /> 
    
  2. 正如你所提到的,你可以使用repeater_ItemDataBound找到每一行的複選框,並相應地設置其值爲:

    protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
        Person person = (Person)e.Item; // e.Item is the datasoruce of the row 
        if (person.IsMarried) 
        { 
         CheckBox isMarried = (CheckBox)(e.Item.FindControl("isMarried")); 
         isMarried.Checked = true; 
        } 
    } 
    
  3. 另一種方式是將隱藏字段中的布爾狀態(這裏是婚姻狀態)注入併發送給客戶端,然後在客戶端使用jQuery(或其他JavaScript框架),根據這些隱藏字段的值更新複選框的選中狀態:

+0

我不知道這是關於較新版本的東西,而是在Visual Studio for Mac上需要: Person person =(Person)e.Item.DataItem; 或 var person =(Person)e.Item.DataItem; –

相關問題