Результат хранимой процедуры будет выглядеть следующим образом.
1 Group Admin user1
1 Group Admin user2
1 Group Admin user3
1 Group Admin user4
1 Group Admin user5
2 Group Second user6
2 Group Second user7
2 Group Second user8
2 Group Second user9
2 Group Second user10
2 Group Second user11
Я хочу отформатировать данные, как показано на рисунке.
Вопрос связан с this
Я думаю, Repeater
- лучший элемент управления для использования здесь.Что ты думаешь ?Если так, как я могу отформатировать это?GridView
со слиянием строк - хорошая идея?
![enter image description here](https://i.stack.imgur.com/dJlAR.gif)
После прочтения ответа
// Page_Load
DataSet ds = GetAllUsers();
ViewState["UserRoles"] = ds;
rptParent.DataSource = ds;
rptParent.DataBind();
Другие события
// ItemDataBound
protected void rptParent_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{
string s = e.Item.DataItem.ToString();
string roleID = ((HiddenField)e.Item.FindControl("hidRoleId")).Value;
Repeater childRepeater = (Repeater)item.FindControl("rptChild");
string filterExp = "RoleId=" + roleID;
DataTable dtChild = ((DataSet)ViewState["UserRoles"]).Tables[0];
DataRow[] dr = dtChild.Select(filterExp);
childRepeater.DataSource = dr;
childRepeater.DataBind();
}
}
Разметить
// MarkUp
<asp:Repeater runat="server" ID="rptParent" OnItemDataBound="rptParent_ItemDataBound">
<ItemTemplate>
<table>
<tr>
<td>
<asp:HiddenField ID="hidRoleId" runat="server" Value='<%#Eval("RoleId")%>' />
<asp:Label ID="lblRoleName" runat="server" Text='<%#Eval("RoleName")%>'></asp:Label>
</td>
<td>
<asp:CheckBox ID="CheckBox4" runat="server" />
</td>
<td>
<asp:CheckBox ID="CheckBox5" runat="server" />
</td>
<td>
<asp:CheckBox ID="CheckBox6" runat="server" />
</td>
</tr>
</table>
<asp:Repeater ID="rptChild" runat="server">
<ItemTemplate>
<table>
<tr>
<td>
<asp:HiddenField ID="hidRoleId" runat="server" Value='<%#Eval("UserId")%>' />
<asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "UserName") %>'></asp:Label>
</td>
<td>
<asp:CheckBox ID="CheckBox7" runat="server" />
</td>
<td>
<asp:CheckBox ID="CheckBox8" runat="server" />
</td>
<td>
<asp:CheckBox ID="CheckBox9" runat="server" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Я получаю следующий вывод
![enter image description here](https://i.stack.imgur.com/FgRqn.png)
Но имя группы также повторяется :(. Это НЕ то, что я хочу