Лично я бы не использовал элемент управления DataGrid, поскольку он ограничивает ваш контроль над выходными данными, и они были заменены более новыми GridView
& ListView
(хотя DataGrid не устарел , поэтому не стесняйтесь использовать его, если хотите). Вы можете рассмотреть возможность использования альтернатив, но вы не обязаны это делать.
Чтобы сделать то, что вы ищете, вы должны иметь следующую разметку:
<asp:Repeater runat="server" ID="myRepeater"
onitemdatabound="Repeater_ItemDataBound">
<ItemTemplate>
<asp:DataGrid runat="server" ID="myDataGrid">
</asp:DataGrid>
</ItemTemplate>
</asp:Repeater>
Затем вы свяжете разметку со следующим кодом:
protected void Page_Load(object sender, EventArgs e)
{
myRepeater.DataSource = new Object[0];
myRepeater.DataBind();
}
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataGrid dg = (DataGrid)e.Item.FindControl("myDataGrid");
object o = e.Item.DataItem;// Cast the DataItem as whatever
// your Repeater's DataSource is
// ...
// Do whatever you need to get the
// data source for your DataGrid here
// ...
dg.DataSource = DataGridSourceObjectHere;
dg.DataBind();
}
Ключом является событие ItemDataBound
репитера, которое вызывается каждый раз при создании строки репитера. Здесь вы можете связать данные с вашим источником DataGrid. В этом методе вы можете использовать любую необходимую логику, используя параметр RepeaterItemEventArgs
для доступа к элементу данных, который вы привязали к своему повторителю.