2017-12-13 14 views
0

私は3日間これを見てきましたので、どうかフィードバックをいただければ幸いです。 私は期待されたデータをプルする親リピータを持っていますが、子リピータをネストしようとしています。コントロールを見つけてデータを取り込みます。これまでのところそれはうまくいきませんでした。いくつかの理由で、以下のネストされたリピータは、適切なデータを表示するために選択されていません。 提案がありますか?C#入れ子のリピータが動作しません

Asp.Netコードはここにある:

の1-リピータが親リピータでもハンドラにする必要ItemDataBound:私はそれを解決し

<asp:Repeater ID="EquipmentRepeater" runat="server" OnItemDataBound="Repeater2_ItemDataBound" > 
      <ItemTemplate> 
       <b>Equipment:</b> 
       <%# DataBinder.Eval(Container.DataItem, "Equip") %>&nbsp; 
       <%# DataBinder.Eval(Container.DataItem, "Location") %>&nbsp; 
       </ItemTemplate> 
     </asp:Repeater> 




protected void Repeater2_ItemDataBound(object sender System.Web.UI.WebControls.RepeaterItemEventArgs e) 
    { 
     SqlConnection con = new SqlConnection(ConString); 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      Repeater Repeater2 = (Repeater)e.Item.FindControl("EquipmentRepeater"); 

      System.Data.DataTable ds = new System.Data.DataTable(); 
      SqlCommand cmd1 = new SqlCommand(" Select HourID, Equip,Location FROM Equip where [email protected]"); 

      cmd1.Parameters.Add("@id", SqlDbType.Int).Value = id; 
      con.Open(); 
      cmd1.Connection = con; 
      cmd1.ExecuteReader(); 
      con.Close(); 
      SqlDataAdapter ad = new SqlDataAdapter(cmd1); 
      // DataTable ds = new DataTable(); 
      ad.Fill(ds); 
      con.Close(); 


      //Need to assign the Data in datatable 
      Repeater2.DataSource = ds; 
      Repeater2.DataBind(); 
     } 

    } 
+0

あなたのコードは、同じリピータを再投入しようとします。あなたの*入れ子*リピーターはどこですか? –

+2

'EquipmentRepeater'がネスト化されたRepeaterである場合、それ自身のItemDataBoundイベントでデータをバインドしようとしています。親Repeaterのイベントを使用する必要があります。 – VDWWD

+0

あなたは正しいですが、ItemDataBoundを親リピータのイベントに変更しましたが、それでもまだデータが入力されていません。子リピータコントロールが見つからないようです。私は親のリピータでGridViewをネストしようとしましたが、幸運はありませんでした。 – user5711432

答えて

0

、2つの問題がありました。 Icreated隠されたIDの親リピータに提出されたとItemDataBound

<asp:HiddenField ID="ID" runat="server" Value='<%# Eval("ID") %>' /> 

protected void Repeater2_ItemDataBound(object sender System.Web.UI.WebControls.RepeaterItemEventArgs e) 
{ 
    SqlConnection con = new SqlConnection(ConString); 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Repeater Repeater2 = (Repeater)e.Item.FindControl("EquipmentRepeater"); 

     System.Data.DataTable ds = new System.Data.DataTable(); 
     SqlCommand cmd1 = new SqlCommand(" Select HourID, Equip,Location FROM Equip where [email protected]"); 

      HiddenField id = (HiddenField)e.Item.FindControl("ID"); 
      int parsedId = int.Parse(id.Value); 
      cmd1.Parameters.Add("@id", SqlDbType.Int).Value = parsedId; 
     con.Open(); 
     cmd1.Connection = con; 
     cmd1.ExecuteReader(); 
     con.Close(); 
     SqlDataAdapter ad = new SqlDataAdapter(cmd1); 
     // DataTable ds = new DataTable(); 
     ad.Fill(ds); 
     con.Close(); 


     //Need to assign the Data in datatable 
     Repeater2.DataSource = ds; 
     Repeater2.DataBind(); 
    } 

} 

上でそれを呼ばれるので、子のリピータのIDパラメータIDだったが、任意の値を持っていなかった 2 - 第二の問題は、あなたのすべてと幸運に感謝

関連する問題