基于复选框的中继器切换Div类.使用c#检查

本文关键字:Div 使用 检查 复选框 中继器 | 更新日期: 2023-09-27 18:16:56

我有一个重复器,它将显示一组标题和复选框(有些已选中,有些未选中)。每一个都被一个带有背景颜色的div包围。我所要做的就是改变已经选中的复选框的背景颜色,这样它们就很容易在页面上被识别。

这是中继器:

<asp:Repeater ID="rptCartridges" runat="server" OnItemDataBound="rp_ItemDataBound">
     <ItemTemplate>
          <div class="cartridgebox">
               <span class="cartridgeboxl"><%#Eval("cartName") %></span> 
               <span class="cartridgeboxr">
                    <asp:CheckBox ID="chkCart" name="chkbox" Checked = '<%#Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "cartChecked"))%>' runat="server" />
                <asp:HiddenField ID="hfCartID" runat="server" Value='<%#DataBinder.Eval(Container.DataItem, "cartID")%>' />
               </span>
          </div>
     </ItemTemplate>
</asp:Repeater>

我真正想做的是将类墨盒更改为墨盒,如果复选框返回为checked。

我已经尝试操纵rp_ItemDataBound。出错的地方在于实际更改了inline类。我试过使用if语句,添加runat="服务器"到div和填充变量,然后使用响应。在类语句内部编写。

看起来最简洁的方法是像这样使用rp_ItemDataBound:

   protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        string chkboxClass = "cartridgebox";
        CheckBox chk = (CheckBox)e.Item.FindControl("chkCart");
        HiddenField hfCartID = (HiddenField)e.Item.FindControl("hfCartID");

        // Adding the hide.Value Attribute to the chk.Text field.
        chk.Attributes.Add("Text", hfCartID.Value);
        if (chk.Checked == true)
        {
            chkboxClass = "cartridgeboxchecked";
        }
        else
        {
            chkboxClass = "cartridgebox";
        }
    }

但是我缺乏将变量chkboxClass动态传递给div的类的理解。当然,我可能完全看错了,所以任何指导都会很感激。

基于复选框的中继器切换Div类.使用c#检查

在ItemTemplate中使用以下标记:<div class='<%# ((bool)Eval("cartChecked"))? "cartridgeboxchecked" : "cartridgeboxl" %>' >

如果您需要立即更改div的复选框更改类,请考虑在ItemDataBound Repeater的事件处理程序

中添加onclick客户端事件处理程序到复选框。