我有一张桌子,我想用这样的OrderedID填充方框;
PlayerId Name OrderedID
4 Alex Nice 1
6 David Cup 3
7 John Fun 2
10 Mary Hill 6
11 Michal Ola 5
12 Henry Ford 4
我怎么能用asp.net做到这一点?我的代码和结果。
SqlConnection yol = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True");
yol.Open();
SqlDataAdapter da = new SqlDataAdapter("Select * from players order by OrderedID", yol);
DataTable dt = new DataTable();
da.Fill(dt);
int k = 1;
for (int i = 0; i <= dt.Rows.Count; i++)
{
StringBuilder sb = new StringBuilder();
for (int j = 0; j < i; j++)
{
sb.Append(dt.Rows[j][2].ToString());
sb.Append(". "+dt.Rows[j][1].ToString() + " ");
k++;
}
treeview.Nodes.Add(new TreeNode(sb.ToString()));
}
这是我的结果。请帮帮我。
答案 0 :(得分:2)
与您的代码不完全是1对1,但我认为它适合您的情况。
我在小提琴中制作了一个类似的片段here。
我想出的“特殊酱”是这个算法:
int skip = 0;
int take = 1;
int addedCount = 0;
do{
sb.AppendLine(string.Join(" ", players.Skip(skip).Take(take).Select(x => $"{x.Order}) {x.Name}")));
addedCount += take;
skip += take;
take += take + 1;
}
while(addedCount < players.Count);
我无法完全在.NET Fiddle中重现数据库,因此我的代码片段使用“播放器”对象,但如果您替换数据库行/列,则应该是好的。可能有更好的循环方式(这只是我快速的2分钟尝试),但这个应该帮助你指明方向。