как построить представление сетки страниц без источника данных
-
06-07-2019 - |
Вопрос
Я хочу задать вопрос о том, как выполнять подкачку в кодировании ASP.net с помощью C #.
я пытаюсь сделать то, что хочу отобразить некоторый контент, иметь несколько столбцов и несколько строк.
в самом кодировании у меня есть список объектов, скажем, объект A
class A {
integer id;
string name;
string desc;
}
и хотите отобразить это на странице с возможностью разбивки по страницам.
Я выполняю поиск в Google, ASP.net предлагает представление сетки и представление списка, но всем им требуется источник данных, а это означает, что таблица напрямую привязана к базе данных.
это не то, что я хочу, потому что мой список объектов A взят откуда-то еще, а не из моей базы данных (например, это составной набор данных, которые генерируются во время выполнения)
так что в любом случае я все еще могу использовать этот полезный компонент, или мне придется делать все это самостоятельно для пейджинга???
спасибо
Решение
Свойство DataSource также принимает List<>
или BindingList<>
.
Чтобы использовать это в коде:
protected void Page_Load(object sender, EventArgs e)
{
var data = new List<Sample>();
data.Add (...);
GridView1.DataSource = data;
GridView1.DataBind();
}
И, возможно, какая-то логика IsPostback и т. д.
Другие советы
Я советую использовать GridView, с которым вы можете использовать ObjectDataSource, который может брать свои базовые данные из указанного вами метода класса.Таким образом, метод класса может быть (следуя вашему примеру кода):
public static List<A> GetAllAs()
{
return myAs;
}
и ваша страница aspx будет содержать
<asp:ObjectDataSource ID="MyODS" runat="server" TypeName="Namespace.Classname" SelectMethod="GetAllAs" />
<asp:GridView ID="grdMyGridView" runat="server" DataSourceID="MyODS" AllowPaging="True" ... >
А TypeName
и SelectMethod
Атрибуты ObjectDataSource сообщают ему, какой метод и где использовать для заполнения ODS данными.А AllowPaging="True"
автоматически обеспечивает пейджинг в GridView.