asp.net Repeater如何按照特定字段绑定特定的内容

  一直觉得repeater不灵活,但是其实如果用后台拼接html内容的话,结合object类型,其实可以变化出多变的内容。这里有个需求需要根据不同的基金经理来绑定变动后的基金经理内容,每个基金经理还有特定的ID用来拼接处html超链接来跳转,困难来了,如果知道不同的内容的基金经理,是一个,二个或者多个呢,多个自然可以用逗号分隔,但是保存出来如何让repeater绑定呢!?这里我采用了eval来实现。具体来看代码:

首先要在实体类中定义一个标记字段和两个用来存放基金经理名的string数组或者仅仅是一个基金经理,那用object对象最好不过,对于前段和中间都隐藏其具体含义,最后强绑定转换就行,当然是根据标记字段来绑定。


   public class FundSubscriptionPeriodTip
    {
        /// 
        /// 公告日期
        /// 
        public string NOTICEDATE { get; set; }

        /// 
        /// 基金代码
        /// 
        public string FCODE { get; set; }

        /// 
        ///  基金名称
        /// 
        public string SHORTNAME { get; set; }

        /// 
        ///  认购起始日
        /// 
        public string ISSBDATE { get; set; }

        /// 
        ///  认购截止日
        /// 
        public string ISSEDATE { get; set; }

        /// 
        /// 验证备案时间
        /// 
        public string CHECKTIME { get; set; }

        /// 
        /// 封闭运作期
        /// 
        public string CLOSETIME { get; set; }

    

        /// 
        ///  基金经理代码
        /// 
        public string JJJLID { get; set; }

        /// 
        ///  基金经理姓名
        /// 
        public string JJJL { get; set; }


        /// 
        /// 认购募集期
        /// 
        public string ISSEDATEISSBDATE { get; set; }

        /// 
        ///  基金经理姓名1
        /// 
        public  object JJJLArray { get; set; }


     

        /// 
        ///  基金经理代码1
        /// 
        public object JJJLIDArray { get; set; }

        /// 
        /// 基金经理数量
        /// 
        public string FundMangerNumber { get; set; }
                        
    }

  数据访问层这边就根据不同的基金经理的数量来分隔或者直接赋值:

       #region 基金认购期
        public static ResultInfo> GetFundSubscriptionPeriodTip()
        {
            ResultInfo> ret = new ResultInfo>();

            try
            {
                using (OracleConnection Conn = new OracleConnection(conn))
                {
                    string sql;
                    OracleCommand Cmd;


                    sql = " select noticedate, " +
                          " fcode," +
                          " shortname, " +
                          " ISSBDATE, " +
                          " ISSEDATE, " +
                         "'7个工作日' checktime,"+
                         "'一般3个月内' closetime,"+
                          " jjjlid," +
                          " jjjl " +
                          " from  fundadmin.fund_jbxx " +
                          " where eisdel=0 and noticedate=to_date(sysdate)";






                    Cmd = new OracleCommand(sql, Conn);
                    //Cmd.Parameters.Add(new OracleParameter(":FCODE", fcode));


                    Conn.Open();
                    OracleDataAdapter oda = new OracleDataAdapter(Cmd);
                    DataTable dtb = new DataTable();
                    oda.Fill(dtb);
                    List miLst = new List();
                    foreach (DataRow row in dtb.Rows)
                    {
                        FundSubscriptionPeriodTip entity = new FundSubscriptionPeriodTip();

                        entity.NOTICEDATE = Convert.ToDateTime((row["NOTICEDATE"])).ToShortDateString();

                        entity.SHORTNAME = FormatTools.ParseString(row["SHORTNAME"]);
                        entity.FCODE = FormatTools.ParseString(row["FCODE"]);
                        entity.ISSBDATE = Convert.ToDateTime(row["ISSBDATE"]).ToShortDateString();
                        entity.ISSEDATE = Convert.ToDateTime((row["ISSEDATE"])).ToShortDateString(); 
                        entity.JJJLID=FormatTools.ParseString(row["JJJLID"]);
                        entity.JJJL=FormatTools.ParseString(row["JJJL"]);
                        entity.CHECKTIME = FormatTools.ParseString(row["CHECKTIME"]);
                        entity.CLOSETIME = FormatTools.ParseString(row["CLOSETIME"]);
                        //entity.ISSEDATEISSBDATE = (entity.ISSEDATE - entity.ISSBDATE).TotalDays.ToString();

                        if (!string.IsNullOrWhiteSpace(entity.JJJLID))
                            if (entity.JJJLID.Contains(","))
                            {
                                entity.JJJLIDArray = entity.JJJLID.Split(',');
                                entity.FundMangerNumber = "1";
                            }
                            else
                            {
                                entity.JJJLIDArray = entity.JJJLID.ToString();
                                entity.FundMangerNumber = "0";
                            }
                        if (!string.IsNullOrWhiteSpace(entity.JJJL))
                            if (entity.JJJL.Contains(","))
                              entity.JJJLArray = entity.JJJL.Split(',');
                           
                            else
                                entity.JJJLArray = entity.JJJL.ToString();

                        miLst.Add(entity);
                    }

                    ret.SetValue(miLst);
                    if (miLst.Count == 0)
                    {
                        ret.Message = "未查询到任何记录信息!";
                        ret.SetValue(new List());
                    }
                    Conn.Close();
                }
            }
            catch (Exception e)
            {
                if (e != null)
                    ret.Message += e.Message;
            }

            return ret;

        }
        #endregion

上面红色部分是关键,后面是用前段来调用:

     
                      基金经理姓名  
                    

                         <%--   .html" target="_blank"> <%#Eval("JJJLArray[0]")%>,.html" target="_blank"> <%#Eval("JJJLArray[1]")%>--%>
                           <%#IsFundMangerNumber(Eval("FundMangerNumber").ToString(),Eval("JJJLIDArray"),Eval("JJJLArray"))%>
                     
                      
                    
                


后台代码就实际来拼接html内容:

 public string IsFundMangerNumber(string FundMangerNumber, object JJJLIDArray, object JJJLArray)
        {
            string Show="";
            if (FundMangerNumber == "1")
            {
                for (int i = 0; i < ((string[])JJJLArray).Count(); i++)
                {
                    Show = Show+" " + ((string[])JJJLArray)[i] + "";
                    if (i < (((string[])JJJLArray).Count()-1))
                        Show = Show + ",";
                }
            }
            else
            {
                Show = Show + "" + JJJLArray + "";

            }
                return Show;
        }  


你可能感兴趣的:(asp.net)