2012-10-15 53 views
4

我使用此http://blogs.msdn.com/b/mikeormond/archive/2008/07/26/dynamically-loading-listview-templates.aspx文章作爲動態加載模板(來自.ascx文件)的示例。從.ascx動態加載ListView模板

這是筆者代碼:

 protected void Page_Load(object sender, EventArgs e) 
    { 

     ListView1.LayoutCreated += new EventHandler(ListView1_LayoutCreated); 
     ListView1.LayoutTemplate = LoadTemplate("LayoutTemplate.ascx"); 
     ListView1.ItemTemplate = LoadTemplate("ItemTemplate.ascx"); 
    } 

    void ListView1_LayoutCreated(object sender, EventArgs e) 
    { 
     //remove the layout template 
     ListView1.Controls.RemoveAt(0); 

     //recreate it 
     Control newLayoutContainer = new Control(); 
     ListView1.LayoutTemplate.InstantiateIn(newLayoutContainer); 
     var userControl = newLayoutContainer.Controls[0]; 
     userControl.ID = "MyLayout"; 
     ListView1.Controls.Add(newLayoutContainer); 
    } 

提示錯誤:

一個ItemTemplate必須在ListView的 'ListView1的' 來定義。

後回傳。

怎麼了?我應該在每次回發時創建ListView(http://forums.asp.net/p/1305569/2558209.aspx)嗎?

回答

4

爲您解決問題請執行以下操作:

<script runat="server"> 

    protected void ListView_Init(object sender, EventArgs e) 
    { 

     ListView1.ItemTemplate = LoadTemplate("ItemTemplate2.ascx"); 

    } 

</script> 

<asp:ListView .... OnInit="ListView_Init">