2011-05-23 77 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事件,您可以添加找到标签的复选框的值并分配的值检查或不复选框。

相关问题