2013-06-28 3 views
1

Как скопировать .aspx ListView (включая его LayoutTemplate и ItemTemplate) из файла aspx.cs? .aspx.cs использует DataBind() для отображения значений на странице.Как скопировать aspx ListView из файла aspx.cs?

так в основном я хочу, чтобы превратить это:

<asp:ListView ID="EvalAnswerList" OnItemDataBound="EvalAnswerList_ItemDataBound" runat="server"> 
      <LayoutTemplate> 
       <table cellpadding="2" width="640px" border="1" runat="server" class="altRows" id="tblProducts"> 
        <tr id="Tr1" runat="server"> 
         <th id="Th1" runat="server">Question 
         </th> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" /> 
       </table> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <tr id="Tr2" runat="server"> 
        <td> 
         <asp:Label ID="QuestionTextLabel" Font-Bold="true" runat="server" /> 
        </td> 
       </tr> 
      </ItemTemplate> 
</asp:ListView> 

В это:

<asp:ListView ID="EvalAnswerList" OnItemDataBound="EvalAnswerList_ItemDataBound" runat="server"> 
      <LayoutTemplate> 
       <table cellpadding="2" width="640px" border="1" runat="server" class="altRows" id="tblProducts"> 
        <tr id="Tr1" runat="server"> 
         <th id="Th1" runat="server">Question 
         </th> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" /> 
       </table> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <tr id="Tr2" runat="server"> 
        <td> 
         <asp:Label ID="QuestionTextLabel" Font-Bold="true" runat="server" /> 
        </td> 
       </tr> 
      </ItemTemplate> 
</asp:ListView> 
<asp:ListView ID="EvalAnswerList" OnItemDataBound="EvalAnswerList_ItemDataBound" runat="server"> 
      <LayoutTemplate> 
       <table cellpadding="2" width="640px" border="1" runat="server" class="altRows" id="tblProducts"> 
        <tr id="Tr1" runat="server"> 
         <th id="Th1" runat="server">Question 
         </th> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" /> 
       </table> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <tr id="Tr2" runat="server"> 
        <td> 
         <asp:Label ID="QuestionTextLabel" Font-Bold="true" runat="server" /> 
        </td> 
       </tr> 
      </ItemTemplate> 
</asp:ListView> 

Это копирование должно быть сделано в файле aspx.cs. Очевидно, это будет не так, но я хотел дать вам представление о том, что я пытаюсь сделать. Я пытался говорить:

ListView test = new ListView(); 
PlaceHolder.Controls.Add(test); 
test = EvalAnswerList; 

, а затем пытается использовать это в test.DataBind(), но он не будет работать.

+1

Как насчет использования ретранслятора? –

ответ

0

В конце концов, я использовал ретранслятор, и он работал. Благодаря!

1

Вы можете использовать webusercontrol, попробуйте ниже шаги

Шаг 1: Создайте UserControl и поместите в виде списка в том, что

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomListView.ascx.cs" 
    Inherits="CustomListView" %> 
<asp:ListView ID="EvalAnswerList" OnItemDataBound="EvalAnswerList_ItemDataBound" 
    runat="server"> 
    <layouttemplate> 
       <table cellpadding="2" width="640px" border="1" runat="server" class="altRows" id="tblProducts"> 
        <tr id="Tr1" runat="server"> 
         <th id="Th1" runat="server">Question 
         </th> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" /> 
       </table> 
      </layouttemplate> 
    <itemtemplate> 
       <tr id="Tr2" runat="server"> 
        <td> 
         <asp:Label ID="QuestionTextLabel" Font-Bold="true" runat="server" /> 
        </td> 
       </tr> 
      </itemtemplate> 
</asp:ListView> 
enter code here 

ЗАД 2: Создание общедоступного DataSet/DataTable для привязки ListView в загрузки страницы

public DataSet dsSource = new DataSet(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      EvalAnswerList.DataSource = dsSource; 
      EvalAnswerList.DataBind(); 
     } 
    } 
enter code here 

Шаг 3: Теперь добавьте ссылку на UserControl в вашем ASPX странице

<%@ Reference Control="CustomListView.ascx" %> 
enter code here 

Шаг 4: Наконец, теперь вы можете использовать этот просмотр списка несколько раз в вас aspx. Возьмите панель или div, а затем добавьте usercontrol туда, где хотите.

CustomListView clv = new CustomListView(); 
clv.dsSource = ds;//dataset/datatable to bind listview 
div.Controls.Add(clv); 

gud luck!