2015-02-26 2 views
0

Я не мог правильно связать ретранслятор ребенка (lvTwo) с использованием данных. Он всегда генерирует исключение NullReferenceException. В режиме отладки мой datatable выглядел отлично, любые мысли?Вложенные ретрансляторы с использованием DataTable

HTML код:

<asp:Repeater ID="lvOne" runat="server" OnItemDataBound="lvOne_ItemDataBound"> 
    <ItemTemplate> 
     <div> 
      I am the one. 
     </div> 
     <asp:Repeater ID="lvTwo" runat="server"> 
      <ItemTemplate> 
       I am the two. 
      </ItemTemplate> 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

код-за (dtTable связать для lvOne, dtTable2 связать для lvTwo):

protected void Page_Load(object sender, EventArgs e) 
    { 
     DataTable dtTable = new DataTable(); 
     dtTable.TableName = "T1"; 
     dtTable.Columns.Add("ProjectName"); 

     DataRow dr = dtTable.NewRow(); 
     dr["ProjectName"] = "ThreeSixFive"; 
     dtTable.Rows.Add(dr); 

     if (!Page.IsPostBack) 
     { 
      lvOne.DataSource = dtTable; 
      lvOne.DataBind(); 
     } 
    } 


protected void lvOne_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     DataTable dtTable2 = new DataTable(); 
     dtTable2.TableName = "T2"; 
     dtTable2.Columns.Add("C"); 

     DataRow dr = dtTable2.NewRow(); 
     dr["C"] = "ThreeSixFive"; 
     dtTable2.Rows.Add(dr); 

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      if (dtTable2 != null) 
      { 
       lvTwo.DataSource = dtTable2; 
       lvTwo.DataBind(); 
      } 
     } 
    }` 
+0

Проверьте вы инициализирован ли lvOne или lvTwo .. Кроме того, где это исключение выброшен из? –

ответ

0

Преступник должен был непризнанного контроля lvTwo. Он был в состоянии собрать за счет контроля регистрируемого в файле конструктора, а мне нужно использовать ФФ:

var lvTwo = (ListView) e.Item.FindControl("lvTwo");