Repeater

ItemDataBound主要是用来最后改变一次repeat在客户端加载的数据主要用来设置 ItemCommand主要是利用repeat的按钮控件的CommandName和CommandArgument

1.ItemCommand实例

         protected void Repeater3_ItemCommand(object source, RepeaterCommandEventArgs e)

        {

            if (e.CommandName == "启用")//CommandName主要使前台代码和后台代码打交道

            {

                T_UsersTableAdapter adapter = new T_UsersTableAdapter();

                long id=  Convert.ToInt64(e.CommandArgument);//CommandArgument主要使后台与数据库打交道

                adapter.AlterjiyongById(id);

                Repeater3.DataBind();

            }

            else if (e.CommandName == "禁用")

            {

                T_UsersTableAdapter adapter = new T_UsersTableAdapter();

                long id = Convert.ToInt64(e.CommandArgument);

                adapter.AlterqiyongByID(id);

                Repeater3.DataBind();

            }

            else {

                throw new Exception("有错");

            }

        }

2. ItemDataBound实例

protected void Repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)

        {

            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)//指触发对象的类型是DadaList里的基本行或是替换行(简单的说是Repeater里的所有数据项内容)          

         {

                DataRowView drv = (DataRowView)e.Item.DataItem;

                var row = (WebApplication1.ObjDateScr.DAL.DataSetPerson.T_UsersRow)drv.Row;

                if (row.state == "禁用")

                {

                    HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");

                    trRow.Attributes["class"] = "trRow";//给<tr runat="server" class="trRow">的行添加属性

                    Button btn = (Button)e.Item.FindControl("disable");

                    btn.Visible = false;

                    Button btn2 = (Button)e.Item.FindControl("able");

                    btn2.Visible = true;

                }

                else if (row.state == "启用")

                {

                    HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");

                    trRow.Attributes["class"] = "";

                    Button btn = (Button)e.Item.FindControl("disable");

                    btn.Visible = true;

                    Button btn2 = (Button)e.Item.FindControl("able");

                    btn2.Visible = false;

                }

                else

                {

                    throw new Exception("非法的状态");

                }

            }

        }

----------------------------------------------------------------------------------------------------------------------------------------------------

//两个Repeat嵌套使用

   页面代码

<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">

                <ItemTemplate>

                    <!--时政板块 start-->

                    <div class="newsBlock">

                        <div class="topTitle">

                            <div class="floatRight">

                                <img src="../../Statics/FrontBBS/images/title_right.jpg" /></div>

                            <div class="floatLeft">

                                <img src="../../Statics/FrontBBS/images/title_left.jpg" /></div>

                            <h2>

                                <%# Eval("PlateName")%></h2>

                               

                            <div class="table-head">

                                <span style="float: right; width: 34%;"><em class="floatRight showTable"></em>最后发表</span>

                                <span style="float: right; width: 12%;">主题/贴数</span></div>

                        </div>

                        <div class="content">

                            <table cellpadding="0" cellspacing="0" class="table-list" width="100%">

                                <tbody>

                                    <asp:Repeater runat="server" ID="Repeater2">

                                        <ItemTemplate>

                                            <tr>

                                                <td width="8%">

                                                    <a href="#">

                                                         <img src=<%# Eval("ThemeImg" )!=null? Eval("ThemeImg"):"../../Statics/FrontBBS/images/icon01.jpg"%> /></a>

                                                </td>

                                                <td width="45%">

                                                    <h3>

                                                        <a href="PostsList.aspx?PlateName=<%# Eval("PlateName")%>&ThemeName=<%# Eval("ThemeName")%>&ThemeID=<%# Eval("ThemeID")%>">

                                                            <%# Eval("ThemeName")%></a>&nbsp;&nbsp;<span class="normal">(今日发帖:<em><%# Eval("TodayPostsNum")%></em>)</span></h3>

                                                    <p>

                                                        <%# Eval("Description")%></p>

                                                </td>

                                                <td width="12%">

                                                    <span class="yellow">

                                                        <%# Eval("PostsNum")%></span>

                                                </td>

                                                <td width="35%">

                                                    <a href="info.html">

                                                        <%# Eval("lastPostsTitle")%></a>

                                                    <p>

                                                        作者:<%# Eval("lastTitlePublishUserName")%></p>

                                                </td>

                                            </tr>

                                        </ItemTemplate>

                                    </asp:Repeater>

                                </tbody>

                            </table>

                        </div>

                        <div class="bottom">

                            <div class="floatRight">

                                <img src="../../Statics/FrontBBS/images/bottom_right.jpg" /></div>

                            <div class="floatLeft">

                                <img src="../../Statics/FrontBBS/images/bottom_left.jpg" /></div>

                        </div>

                    </div>

                    <!--时政板块 end-->

                </ItemTemplate>

            </asp:Repeater>

 

   后台代码

 ThemeAndPostsService _ThemeAndPostsService = new ThemeAndPostsService();

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                BindThemeRepeater();

            }

        }

 

        private void BindThemeRepeater()

        {

            this.Repeater1.DataSource = _ThemeAndPostsService.GetPlateList();

            this.Repeater1.DataBind();

        }

 

        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

        {

            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

            {

                Repeater r = (Repeater)e.Item.FindControl("Repeater2");

                Plate Plate = (Plate)e.Item.DataItem;

                BindThemeAndPostsList(r, Plate);

            }

        }

 

        private void BindThemeAndPostsList(Repeater r, Plate Plate)

        {

            r.DataSource = _ThemeAndPostsService.GetThemeAndPostsList(Plate);

            r.DataBind();

        }

服务代码

 public class ThemeAndPostsService

    {

        private readonly Dao _dao = Dao.Get();

        public IList<Plate> GetPlateList()

        {

         return  _dao.QueryEntities<Plate>("ZJForum.GetPlateList", null);

        }

 

        public IList<ThemeAndPosts> GetThemeAndPostsList(Plate Plate)

        {

            var param = new Dictionary<string, object>() { { "PlateID", Plate.PlateID } };

            return _dao.QueryEntities<ThemeAndPosts>("ZJForum.GetThemeAndPostsList", param);

        }

    }

------------------------------------------------------------------------------------------------------------------------------------------------

// repeater 生成的列表,及填了数据后的列表数据的获取

 <!--每天要安排的任务-->

    <div style="height: 520px; overflow: auto; width: 780px;">

        <asp:Repeater runat="server" ID="Repeater1">

            <HeaderTemplate>

                <table>

            </HeaderTemplate>

            <ItemTemplate>

                <tr>

                    <td>

                        <asp:Label ID="lEveryDayTime" runat="server" Text='<%# Eval("WorkingDate")%>'></asp:Label>

                        <asp:HiddenField ID="hfDetailID" runat="server" Value='<%# Eval("DetailID")%>' />

                    </td>

                    <td>

                        <table>

                            <tr>

                                <td>

                                    上午:

                                </td>

                                <td>

                                    <asp:TextBox runat="server" ID="Forenoon" Text='<%# Eval("AMDetails")%>' TextMode="MultiLine"

                                        Rows="5" Columns="40" Width="600px" data-validator="required,length[1,100]"></asp:TextBox>

                                </td>

                            </tr>

                            <tr>

                                <td>

                                    下午:

                                </td>

                                <td>

                                    <asp:TextBox runat="server" ID="Afternoon" Text='<%# Eval("PMDetails")%>' TextMode="MultiLine"

                                        Rows="5" Columns="40" Width="600px" data-validator="required,length[1,100]"></asp:TextBox>

                                </td>

                            </tr>

                        </table>

                    </td>

                </tr>

            </ItemTemplate>

            <FooterTemplate>

                </table>

            </FooterTemplate>

        </asp:Repeater>

    </div>

 

后台代码:  生成repeater数据的

 protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                if (Request["FormViewMode"] == "Insert")

                {

                    JudgeIsWorkWeekData();

                    Repeater1.DataSource = datalist;  //初始化空的数据

                    for (int i = 0; i < datalist.Count; i++)

                    {

                        this.txtWorkingPlanBegin.Text = datalist[0].WorkingDate;

                        this.txtWorkingPlanEnd.Text = datalist[i].WorkingDate;

                    }

                    Repeater1.DataBind();

                }

                else if (Request["FormViewMode"] == "Edit")

                {

                    SmartForm.Fill(container, "data_workingplan.getbyId");

                    string ID = Request["ID"] == null ? string.Empty : Request["ID"].ToString();

                    Repeater1.DataSource = PlanDetailsBLL.GetList(ID);

                    Repeater1.DataBind();

 

                }

            }

        }

 /// </summary>

        /// <summary>

        /// 判断是否是工作周,以及初始化下周的每天时间数据

        /// </summary>

        private void JudgeIsWorkWeekData()

        {

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now)))

            {

                Data_WorkingPlanDetails onedata = new Data_WorkingPlanDetails();

                onedata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).ToString("yyyy-MM-dd");

                datalist.Add(onedata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(1)))

            {

                Data_WorkingPlanDetails twodata = new Data_WorkingPlanDetails();

                twodata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(1).ToString("yyyy-MM-dd");

                datalist.Add(twodata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(2)))

            {

                Data_WorkingPlanDetails threedata = new Data_WorkingPlanDetails();

                threedata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(2).ToString("yyyy-MM-dd");

                datalist.Add(threedata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(3)))

            {

                Data_WorkingPlanDetails fourdata = new Data_WorkingPlanDetails();

                fourdata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(3).ToString("yyyy-MM-dd");

                datalist.Add(fourdata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(4)))

            {

                Data_WorkingPlanDetails fivedata = new Data_WorkingPlanDetails();

                fivedata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(4).ToString("yyyy-MM-dd");

                datalist.Add(fivedata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(5)))

            {

                Data_WorkingPlanDetails sixdata = new Data_WorkingPlanDetails();

                sixdata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(5).ToString("yyyy-MM-dd");

                datalist.Add(sixdata);

            }

            if (DateExtend.IsWorkDay(CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(6)))

            {

                Data_WorkingPlanDetails sevendata = new Data_WorkingPlanDetails();

                sevendata.WorkingDate = CalculateFirstDateOfNextWeek(DateTime.Now).AddDays(6).ToString("yyyy-MM-dd");

                datalist.Add(sevendata);

            }

        }

 

获取repeater中填写的数据保存数据库

 public string PlanId

        {

            get { return ViewState["PlanId"] == null ? string.Empty : ViewState["PlanId"].ToString(); }

            set { ViewState["PlanId"] = value; }

        }

 

        Data_WorkingPlanBLL PlanBLL = new Data_WorkingPlanBLL();

        protected void SaveOrUpdatPlanDetails(object sender, EventArgs e)

        {

            Data_WorkingPlan Plan = SmartForm.GetEntity<Data_WorkingPlan>(container);

            PlanId = PlanBLL.SaveOrUpdate(Plan);

            List<Data_WorkingPlanDetails> lsto = GetAllPlan(PlanId);

            foreach (Data_WorkingPlanDetails item in lsto)

            {

                PlanDetailsBLL.SaveOrUpdate(item);

            }

            ScriptHelper.AlertAndClose(this.Page, "保存成功!!!", true);

        }

        /// <summary>

        /// 获取安排的任务计划

        /// </summary>

        /// <param name="PlanId"></param>

        /// <returns></returns>

        private List<Data_WorkingPlanDetails> GetAllPlan(string PlanId)

        {

            List<Data_WorkingPlanDetails> lsto = new List<Data_WorkingPlanDetails>();

            foreach (RepeaterItem ri in Repeater1.Items)

            {

                Data_WorkingPlanDetails PlanDetails = new Data_WorkingPlanDetails();

                Label label = (Label)ri.FindControl("lEveryDayTime");

                HiddenField hfDetailID = (HiddenField)ri.FindControl("hfDetailID");

                TextBox txtForenoon = (TextBox)ri.FindControl("Forenoon");

                TextBox txtAfternoon = (TextBox)ri.FindControl("Afternoon");

                PlanDetails.DetailID = hfDetailID.Value;

                PlanDetails.ID = PlanId;

                PlanDetails.WorkingDate = label.Text;

                PlanDetails.AMDetails = txtForenoon.Text;

                PlanDetails.PMDetails = txtAfternoon.Text;

                lsto.Add(PlanDetails);

            }

            return lsto;

        }

 

        /// <summary>

        ///  计算下周起始日期(礼拜一的日期)

        /// </summary>

        /// <param name="someDate">当前系统时间</param>

        /// <returns></returns>

        public static DateTime CalculateFirstDateOfNextWeek(DateTime someDate)

        {

            int i = someDate.DayOfWeek - DayOfWeek.Monday;

            if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。

            TimeSpan ts = new TimeSpan(i + 7, 0, 0, 0);

            return someDate.Add(ts);

        }

        #region

        ///// <summary>

        /////  计算本周起始日期(礼拜一的日期)

        ///// </summary>

        ///// <param name="someDate">当前系统时间</param>

        ///// <returns></returns>

        //public static DateTime CalculateFirstDateOfWeek(DateTime someDate)

        //{

        //    int i = someDate.DayOfWeek - DayOfWeek.Monday;

        //    if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。

        //    TimeSpan ts = new TimeSpan(i, 0, 0, 0);

        //    return someDate.Subtract(ts);

        //}

 

 

 

        ///// <summary>

        ///// 计算本周结束日期(礼拜日的日期)

        ///// </summary>

        ///// <param name="someDate">当前系统时间</param>

        ///// <returns></returns>

        //public static DateTime CalculateLastDateOfWeek(DateTime someDate)

        //{

        //    int i = someDate.DayOfWeek - DayOfWeek.Sunday;

        //    if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。

        //    TimeSpan ts = new TimeSpan(i, 0, 0, 0);

        //    return someDate.Add(ts);

        //}

 

        ///// <summary>

        /////  判断选择的日期是否是本周

        ///// </summary>

        ///// <param name="someDate"></param>

        ///// <returns></returns>

        //public static bool IsThisWeek(DateTime someDate)

        //{

        //    //得到someDate对应的周一

        //    DateTime someMon = CalculateFirstDateOfWeek(someDate);

        //    //得到本周一

        //    DateTime nowMon = CalculateFirstDateOfWeek(DateTime.Now);

        //    TimeSpan ts = someMon - nowMon;

        //    if (ts.Days < 0)

        //        ts = -ts;//取正

        //    if (ts.Days >= 7)

        //    {

        //        return false;

        //    }

        //    else

        //    {

        //        return true;

        //    }

        //}

        #endregion

    }

posted @ 2013-11-26 23:55  weifb  阅读(411)  评论(0)    收藏  举报