C# 使用字典绑定转发器
假设我有一个数据表,其中包含以下结构中的数据: 收入认证-1000 收入IT考试完成-1000 ACAdminics-Value1-100 ACAdminics-Value23-1000 ... 等等 我编写了一个查询,将返回一个字典,其中键为Revenue和academicals,在这些键下是一个包含所有其他值的通用列表 现在我需要显示一个中继器控件,其中 1行将是此字典的键,并且在该键下面是所有关联值C# 使用字典绑定转发器,c#,nested-repeater,C#,Nested Repeater,假设我有一个数据表,其中包含以下结构中的数据: 收入认证-1000 收入IT考试完成-1000 ACAdminics-Value1-100 ACAdminics-Value23-1000 ... 等等 我编写了一个查询,将返回一个字典,其中键为Revenue和academicals,在这些键下是一个包含所有其他值的通用列表 现在我需要显示一个中继器控件,其中 1行将是此字典的键,并且在该键下面是所有关联值 我不明白如何做到这一点。。。中继器下的中继器或其他任何东西。请帮助设计中继器或任何其他控件
我不明白如何做到这一点。。。中继器下的中继器或其他任何东西。请帮助设计中继器或任何其他控件,并将值绑定到它。首先,我要感谢@Aybe的回复 我试了很多,终于得到了预期的结果
<div>
<table>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<%#Eval("Key") %>
<div>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<asp:Label runat="server" ForeColor="Red" Text='<%#Eval("MetricName") %>'></asp:Label><br />
<asp:Label runat="server" ForeColor="Red" Text='<%#Eval("FiscalYeartarget") %>'></asp:Label><br />
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
在web上搜索主详细信息视图。
public Dictionary<string, List<custom>> query1;
string connstr = "Data Source=(local);Initial Catalog=t;Integrated Security=True";
string query = "SELECT * FROM [td]";
DataTable dTable = new DataTable();
using (SqlConnection sqlconn = new SqlConnection(connstr))
{
sqlconn.Open();
SqlDataAdapter sqlda = new SqlDataAdapter(query, sqlconn);
sqlda.Fill(dTable);
query1 = dTable.AsEnumerable().GroupBy(x => x.Field<string>("HeaderName"))
.ToDictionary(grp => grp.Key, x => x.Select(y => new custom()
{
MetricName = y.Field<string>("MetricName/KPI"),
FiscalYeartarget = y.Field<double>("FiscalYeartarget").ToString(),
Status = y.Field<string>("Status"),
VTF = y.Field<double>("VTF").ToString(),
VTF_Percent = y.Field<double>("VTF %").ToString(),
YTDResults = y.Field<double>("YTDResults").ToString(),
YTDTarget = y.Field<double>("YTDTarget").ToString()
}).ToList());
Repeater1.DataSource = query1;
Repeater1.DataBind();
var counter = 0;
foreach (var x in query1)
{
Repeater rptr = (Repeater)Repeater1.Controls[counter].FindControl("Repeater2");
rptr.DataSource = x.Value.ToList();
rptr.DataBind();
counter++;
}
}
public class custom
{
public string MetricName { get; set; }
public string FiscalYeartarget { get; set; }
public string YTDTarget { get; set; }
public string YTDResults { get; set; }
public string VTF { get; set; }
public string VTF_Percent { get; set; }
public string Status { get; set; }
}