#region 动态生成Repeater模板
    public class MyTemplate : ITemplate
    {
        System.Web.UI.WebControls.ListItemType templateType;
        static int titleLength;
        public MyTemplate(System.Web.UI.WebControls.ListItemType type)
        {
            templateType = type;
        }
        #region ITemplate 成员        public void InstantiateIn(Control container)
        {
            PlaceHolder ph = new PlaceHolder();
            //Label item1 = new Label();
            //HyperLink item2 = new HyperLink();
            //Label item3 = new Label();
            //item1.ID = "item1";
            //item2.ID = "item2";            switch (templateType)
            {
                case ListItemType.Header:
                    ph.Controls.Add(new LiteralControl("<table border=\"1\" width=\"100%\" class=\"grd\">"));
                    ph.Controls.Add(new LiteralControl("<tr><td class=\"grid_title\">Task Name<br />任务名称"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">BBAC CN No<br />更改通知书号"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Initiator<br />发起人"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Department Name<br />所在部门"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">AeJ<br />年度型"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Date<br />日期"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Status<br />状态"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">View<br />查看"));
                    ph.Controls.Add(new LiteralControl("</td></tr>"));
                    break;
                case ListItemType.Item:
                    ph.Controls.Add(new LiteralControl("<tr><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                    ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\" align=\"center\" width=\"45\">"));
                    ph.Controls.Add(new LiteralControl("</td></tr>"));
                    ph.DataBinding += new EventHandler(Item_DataBinding);
                    break;
                case ListItemType.AlternatingItem:
                    //ph.Controls.Add(new LiteralControl("<tr><td>"));
                    //ph.Controls.Add(item2);
                    //ph.Controls.Add(new LiteralControl("</td><td>"));
                    //ph.Controls.Add(item1);
                    //ph.Controls.Add(new LiteralControl("</td></tr>"));
                    //ph.DataBinding += new EventHandler(Item_DataBinding);
                    break;
                case ListItemType.Footer:
                    ph.Controls.Add(new LiteralControl("</table>"));
                    break;
            }
            container.Controls.Add(ph);
        }        #endregion        static void Item_DataBinding(object sender, System.EventArgs e)
        {
                  
        }    }    #endregion  请问在设置ItemTemplate的时候,我如何实现Eval 
     绑定某数据列显示哪位大侠帮个忙 解答一下 还有就是有可能在某一列的td中加个超链接什么的  怎么弄 

解决方案 »

  1.   

    1、直接把值,设给LiteralControl
    2、实例一个链接,然后直接ph.Controls.Add(链接对象的名字)
      

  2.   

    DataList list = new DataList();
    list.ItemTemplate = Page.LoadTemplate("A.ascx");
    list.ItemDataBound += new DataListItemEventHandler(list_ItemDataBound);
    list.DataSource = dt;
    list.DataBind();void list_ItemDataBound(object sender, DataListItemEventArgs e)
      {
      Control ctrl = e.Item.Controls[0];
      Label lbl = (Label)ctrl.FindControl("lbl");
      lbl.Text = DataBinder.Eval(e.Item.DataItem, "name").ToString();
      }class MyTemplate : ITemplate
    {
      public void InstantiateIn(Control container)
      {
      Literal lbl = new Literal();
      lbl.DataBinding += new EventHandler(lbl_DataBinding);
      container.Controls.Add(lbl);
      }
      private void lbl_DataBinding(object sender, EventArgs e)
      {
      Literal lbl = (Literal)sender;
      lbl.Text = "<a href=\"" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Link").ToString() + "\">" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Name").ToString() + "</a>";
    }
      

  3.   

    动态生成repeater。。你直接动态生成table好了。。
      

  4.   


     wuyq11  没太看明白你的意思
      

  5.   

    不清楚为什么要动态生成Repeater,数据控件在使用的时候,本身的数据就是要动态的。不然就失去了使用数据控件的意义了。你可以动态生成table
      

  6.   


    因为不确定要用多少个repeater来展示数据  至于为什么不用table? 我想使用repeater的ItemCommand事件
      

  7.   

    #region 动态生成Repeater模板
        public class MyTemplate : ITemplate
        {
            System.Web.UI.WebControls.ListItemType templateType;
            static int titleLength;
            public MyTemplate(System.Web.UI.WebControls.ListItemType type)
            {
                templateType = type;
            }
            #region ITemplate 成员        public void InstantiateIn(Control container)
            {
                PlaceHolder ph = new PlaceHolder();            Label column1 = new Label();
                Label column2 = new Label();
                Label column3 = new Label();
                Label column4 = new Label();
                Label column5 = new Label();
                Label column6 = new Label();
                Label column7 = new Label();
                ImageButton imageBtn = new ImageButton();
                HiddenField hf = new HiddenField();            //设置ContorlId
                column1.ID = "column1";
                column2.ID = "column2";
                column3.ID = "column3";
                column4.ID = "column4";
                column5.ID = "column5";
                column6.ID = "column6";
                column7.ID = "column7";
                imageBtn.ID = "imageBtn";
                hf.ID = "hf";            //创建RepeaterItems
                switch (templateType)
                {
                    case ListItemType.Header:
                        ph.Controls.Add(new LiteralControl("<table border=\"1\" width=\"100%\" class=\"grd\">"));
                        ph.Controls.Add(new LiteralControl("<tr><td class=\"grid_title\">Task Name<br />任务名称"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">BBAC CN No<br />更改通知书号"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Initiator<br />发起人"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Department Name<br />所在部门"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">AeJ<br />年度型"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Date<br />日期"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">Status<br />状态"));
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_title\">View<br />查看"));
                        ph.Controls.Add(new LiteralControl("</td></tr>"));
                        break;
                    case ListItemType.Item:
                        ph.Controls.Add(new LiteralControl("<tr><td class=\"grid_body center\">"));
                        ph.Controls.Add(column1);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column2);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column3);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column4);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column5);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column6);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\">"));
                        ph.Controls.Add(column7);
                        ph.Controls.Add(new LiteralControl("</td><td class=\"grid_body center\" align=\"center\" width=\"45\">"));
                        ph.Controls.Add(imageBtn);
                        ph.Controls.Add(hf);
                        ph.Controls.Add(new LiteralControl("</td></tr>"));
                        ph.DataBinding += new EventHandler(Item_DataBinding);
                        break;
                    case ListItemType.AlternatingItem:
                        break;
                    case ListItemType.Footer:
                        ph.Controls.Add(new LiteralControl("</table>"));
                        break;
                }            //添加到Container中
                container.Controls.Add(ph);
            }        #endregion        static void Item_DataBinding(object sender, System.EventArgs e)
            {
                PlaceHolder ph = (PlaceHolder)sender;
                RepeaterItem ri = (RepeaterItem)ph.NamingContainer;            //Eval
                ((Label)ph.FindControl("item1")).Text = (string)DataBinder.Eval(ri.DataItem, "Index");            object task = DataBinder.Eval(ri.DataItem, "TaskName");
                ((Label)ph.FindControl("item2")).Text = (string)DataBinder.Eval(ri.DataItem, GetTask(task));            ((Label)ph.FindControl("item3")).Text = (string)DataBinder.Eval(ri.DataItem, "CNNo");
                ((Label)ph.FindControl("item4")).Text = (string)DataBinder.Eval(ri.DataItem, "OriginatorName");
                ((Label)ph.FindControl("item5")).Text = (string)DataBinder.Eval(ri.DataItem, "DepartmentName");
                ((Label)ph.FindControl("item6")).Text = (string)DataBinder.Eval(ri.DataItem, "ModelYear");            object obj1 = DataBinder.Eval(ri.DataItem, "Status");
                object obj2 = DataBinder.Eval(ri.DataItem, "UserId");
                ((Label)ph.FindControl("item7")).Text = (string)DataBinder.Eval(ri.DataItem, GetStr(obj1, obj2));            ((HiddenField)ph.FindControl("hf")).Value = (string)DataBinder.Eval(ri.DataItem, "UserId");            ImageButton imgBtn = ((ImageButton)ph.FindControl("imageBtn"));
                imgBtn.ImageUrl = "~/Images/btn-view.gif";
                imgBtn.CommandArgument = (string)DataBinder.Eval(ri.DataItem, "UserId"); ;
                imgBtn.CommandName = "change";
            }        //处理数据
            static string GetTask(object obj)
            {
                string str = string.Empty;
                //
                return str;
            }        //
            static string GetStr(object obj1, object obj2)
            {
                string str = string.Empty;
                //
                return str;
            }
        }    #endregion
      
      现在唯一的问题是:如何注册动态repeater的ItemCommand事件,在那注册呢?