Вопрос

У меня есть таблица с двумя столбцами:

CommunityID
PersonID

И таблица «Люди», которая имеет (среди прочего):

FirstName
LastName

Я хотел бы отображать разные сетки данных для каждого сообщества, причем в каждой сетке данных будут только люди, являющиеся частью этого сообщества.Я хотел бы сделать это без использования 4 отдельных источников SqlDataSources.

Повторитель выглядит хорошим способом с DataGrid внутри ItemTemplate, но я не могу понять, как заставить его работать с разными значениями для каждого повторения.

Если у кого-нибудь есть какие-либо предложения по лучшим способам сделать это, я был бы очень признателен, поскольку это один из моих первых набегов на ASP.NET.

Спасибо,

Майк

Это было полезно?

Решение

Лично я бы не стал использовать элемент управления 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 параметр для доступа к элементу данных, который вы привязали к повторителю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top