2017-09-25 15 views
0

これは私のコードビハインドです。ピラミッド形asp.netデータリストの作成方法?

​​

RepeatColumsプロパティ1.2.3.4.5.6.7.8.9.10を設定します。最後に、データリストは三角形またはピラミッドのように表示されます。 あなたは私の見方を変えることができます。問題ない。私はRepeatColumsを変更したい。最初に2番目の行に1番目の行、2番目と3番目のレコード、3番目の行に4-5-6のレコードを記録します。

Default.aspxのコード...

<asp:DataList runat="server" ID="datalist1" RepeatLayout="Flow" RepeatColumns="2"> <ItemTemplate> 

      <asp:HyperLink ID="HyperLink1" CssClass="link" NavigateUrl='PlayerDetails.aspx?id=<%# Eval("Id") %>' runat="server"> <%# Eval("Sira") %>. <%# Eval("AdSoyad") %></asp:HyperLink> 

      </ItemTemplate> </asp:DataList> 

答えて

1

ネスト2つのデータリストの要素は、あなたが

ので、内部ループの長さを制御するために外部のループを使用することができた場合は、コードが背後に似ていますしかし、この

次のようになり、繰り返し

protected void Page_Load(object sender, EventArgs e) 
    { 
     SqlConnection path = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True"); 
     path.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("Select * from Players", path); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 


     // fill the players list from the database 
     List<Players> playerList = new List<Players>(); 
     playerList = (from DataRow dr in dt.Rows 
         select new Players() 
         { 
          Name = (dr["Name"].ToString()), 
          Order = int.Parse(dr["Order"].ToString()), 
          ID = int.Parse(dr["ID"].ToString()) 

         }).ToList(); 

     playerList = playerList.OrderBy(x => x.ID).ToList(); 

     // consume the players list in increasing increments 
     List<Tier> tierList = new List<Tier>(); 
     for(var tierLength = 1; playerList.Count > 0; tierLength++) 
     { 
      var tier = new Tier(); 
      tier.Players = new List<Players>(); 
      tier.TierLength = tierLength; 
      for(var playerCount = 0; playerCount < tierLength && playerList.Count > 0; playerCount++) 
      { 
       tier.Players.Add(playerList[0]); 
       playerList.RemoveAt(0); 
      } 
      tierList.Add(tier); 
     } 

     // bind the tierList to the outer datalist element 
     // the inner datalist element will be a child 
     DataList0.DataSource = tierList; 
     DataList0.DataBind(); 
    } 
} 
public class Players 
{ 
    public string Name { get; set; } 
    public int Order { get; set; } 
    public int ID { get; set; } 
} 
public class Tier 
{ 
    public List<Players> Players { get; set; } 
    public int TierLength { get; set; } 
} 

とASPXコードの長さを定義するコンテナのリストが含まれています

<asp:DataList ID="DataList0" runat="server"> 
    <ItemTemplate> 
     <asp:DataList ID="DataList1" runat="server" DataSource='<%# Eval("Players") %>' RepeatLayout="Flow" RepeatColumns='<%# Eval ("TierLength") %>'> 
      <ItemTemplate> 
       <asp:HyperLink ID="HyperLink1" CssClass="link" NavigateUrl='PlayerDetails.aspx?id=<%# Eval("ID") %>' runat="server"><%# Eval("Name") %></asp:HyperLink> 
      </ItemTemplate> 
     </asp:DataList> 
    </ItemTemplate> 
</asp:DataList> 
+0

あなたは完璧です。ありがとう。 –

関連する問題