2011-05-23 21 views
1

我在數據列表中有2個複選框[isSold(bit),offline(bit)],我想設置該複選框被選中或取消選中取決於該行的數據庫結果。例如,如果產品已售出,售出的列將是真實的,因此應該檢查該複選框。我嘗試用下面的代碼,但沒有成功做acheive所需的結果:設置複選框被選中/取消選中,具體取決於數據列表中的列結果

<asp:DataList ID="dlEditCaravans" runat="server" 
      RepeatDirection="Vertical" DataKeyField="makeID" OnEditCommand="edit" 
      OnDeleteCommand="delete" ItemStyle-CssClass="dleditCaravans" 
      onitemcommand="dlEditCaravans_ItemCommand" 
      onitemdatabound="dlEditCaravans_ItemDataBound"> 

          <ItemTemplate> 
          <div class="imgeditCaravan"> 
          <asp:Image runat="server" ID="caravanImage" ImageUrl='<%#String.Format("/images/caravans/{0}", Eval("image")) %>' Height="80" Width="80" /> 
          </div> 
          <div class="lblmakeCaravan"> 
          <asp:Label ID="lblMake" runat="server" Text='<%#Eval("make") %>' CssClass="lblheader"></asp:Label> 

          <br /> 

          <asp:Label ID="imgDesc" runat="server" CssClass="lblDescription" Text='<%#(Eval("description").ToString().Length>350)?Eval("description").ToString().Substring(0,50)+ "....":Eval("description").ToString() + "...." %>'></asp:Label> 

          <br /> 
          <asp:Label ID="lblPrice" runat="server" Text='<%#"£&nbsp;"+Eval("Price")%>'></asp:Label> 
          <br /> 
          </div> 
          <div class="editImage"> 
          <asp:ImageButton ID="edit" runat="server" CommandName="edit" ImageUrl="~/images/newsControls/edit.gif" ToolTip="Edit Caravan"/> 
          <asp:ImageButton ID="delete" runat="server" CommandName="delete" ImageUrl="~/images/newsControls/delete.gif" ToolTip="Delete Caravan"/> 
          <br /> <br /> 
           <asp:Button ID="btnAddToFeature" runat="server" Text="Add To Feautured Caravans" CommandName="AddToCaravans" Enabled="false" Width="210" Height="30" ForeColor="#1D91BD" ToolTip="Add Caravan To Feautured Caravans"/><br /><br /> 
           <asp:Button ID="btnRemoveFeature" runat="server" Text="Remove From Feautured Caravans" CommandName="RemoveToCaravans" Enabled="false" ToolTip="Remove from Featured Caravans" Width="210" Height="30" ForeColor="#1D91BD" /> 
          <br /> <br /> 
          <asp:CheckBox runat="server" ID="chkOffline" Checked='<%#Eval("offline") %>' /> &nbsp; <label>Set This Caravan in Offline mode</label> 
          </div> 
          </ItemTemplate> 

          <SeparatorTemplate> 
          <div class="descSeparator"></div> 
          </SeparatorTemplate> 

       </asp:DataList> 

回答

3

首先,這應該工作:Checked='<%#Eval("offline") %>',如果它不能正常工作,它必須是一個不同的問題。

或者,您可以在ItemDataBound事件中執行相同操作。如..

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) 
    { 
     DataRow dr = ((DataRowView)e.Item.DataItem).Row; 
     ((CheckBox)e.Item.FindControl("chkOffline")).Checked = Convert.ToBoolean(dr["chkOffline"]); 
    } 
    } 
} 
+0

我可以有checkbox的commandName屬性,因爲我需要在客戶端點擊複選框時將虛假值插入數據庫 – 2011-05-23 09:29:50

+0

有複選框的CommandName屬性,但是如果您可以檢查天氣先前的狀態已被選中/選中。 – 2011-05-23 09:33:24

+0

好吧,我將添加autopostback = true,因此當客戶端點擊複選框時,它應該將假/真值插入到數據庫中重新綁定數據列表,是否正確的做法 – 2011-05-23 09:34:53

1

你可以做的是,存儲值,而不是複選框,然後在ItemDataBound事件,您可以添加找到標籤的複選框的值並分配的值檢查或不復選框。

相關問題