在Repeater / CheckboxList中设置复选框

时间:2014-11-17 11:55:32

标签: c# asp.net repeater checkboxlist asprepeater

我正在使用Repeater来显示来自Web服务的一些数据。

我的中继器结构是:

<asp:Repeater ID="rptgrp" runat="server">
   <ItemTemplate>
     <asp:CheckBoxList ID="chkBoxListGoup" runat="server"
          DataSource='<%# DataBinder.Eval(Container.DataItem, "Titles")%>' 
          DataTextField="Title"
          DataValueField="IDTitle">
      </asp:CheckBoxList>                
   </ItemTemplate>
 </asp:Repeater>

现在,我的网络服务会在“标题”中返回这些字段:

1)标题

2)IDTitle

3)isUserTitle

现在,我想在isUserTitle = 1时设置一个复选框。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您可以在下面找到复选框列表

在itemdatabound中查找复选框列表,   使用循环检查每个checkboxlist的项目文本,  选择文本为1

的项目
Protected void Repeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)   
  {
    CheckBoxList chklst = (CheckBoxList)e.Item.FindControl("chkBoxListGoup");
    for (int i = 0; i < chk.Items.Count; i++)
    {
        if (chk.Items[i].Text == "1")
        {
            chk.Items[i].Selected = true;
        }
    }
  }
}

答案 1 :(得分:0)

尝试更改<asp:CheckBoxList ID="chkBoxListGoup" runat="server"

<asp:CheckBoxList ID="chkBoxListGoup" Checked='<%#Eval("Flag")%>' runat="server"

Flag是你的专栏..

然后在你的方法或事件处理程序中,你想运行一些代码来说明是否检查了这个值= 1,elseif value = 0 unchecked ...

答案 2 :(得分:0)

以下是演示该想法的示例代码:

代码隐藏:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
using WebApp.RepeaterCheckboxList.TODODatasetTableAdapters;

namespace WebApp.RepeaterCheckboxList
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        IEnumerable<TODODataset.TasksViewRow> view;
        IEnumerable<TODODataset.TasksViewRow> subview;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TasksViewTableAdapter adp = new TasksViewTableAdapter();
                var dt = adp.GetData();
                view = dt.AsEnumerable();
                var names = (from x in view
                             select new
                             {
                                 Person = x.Name,
                                 ID = x.PersonID
                             }).Distinct();
                DataList1.DataSource = names;
                DataList1.DataBind();

            }
        }

        protected void CheckBoxList1_DataBound(object sender, EventArgs e)
        {
            CheckBoxList theList = (CheckBoxList)sender;
            var person = ((DataListItem)theList.Parent).DataItem as dynamic;
            var name = person.Person;
            var id = person.ID;

            var vw = subview;
            for (int i = 0, j = vw.Count(); i < j; i++)
            {
                var task = vw.ElementAt(i);
                theList.Items[i].Selected = task.Completed;
            }
        }        

        protected IEnumerable<TODODataset.TasksViewRow> GetTasks(object data)
        {
            var vw = data as dynamic;
            return subview = (from x in view
                    where x.PersonID == vw.ID
                    select x);

        }
    }
}

.aspx的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.RepeaterCheckboxList.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:DataList ID="DataList1" runat="server">
            <ItemTemplate>
                <div style="padding:5px">
                    <h3><%# Eval("Person") %></h3>
                    <div>
                        <asp:CheckBoxList OnDataBound="CheckBoxList1_DataBound" ID="CheckBoxList1" 
                            runat="server" 
                            DataTextField="TaskDesc" DataValueField="TaskID"
                            DataSource="<%# GetTasks(Container.DataItem) %>"></asp:CheckBoxList>
                    </div>
                </div>
            </ItemTemplate>
        </asp:DataList>

    </div>
    </form>
</body>
</html>

如果您对数据感兴趣,请点击here

答案 3 :(得分:0)

尝试将Checked值设置为Eval编辑的对象。

<asp:Repeater ID="rptgrp" runat="server">
   <ItemTemplate>
     <asp:CheckBoxList ID="chkBoxListGoup" runat="server"
          Checked=<%# Eval("isUserTitle") %>>
      </asp:CheckBoxList>                
   </ItemTemplate>
 </asp:Repeater>