Vincent Maverick Durano
Если ваше намерение состоит только в том, чтобы отображать данные и изображения, то вы можете использовать Repeater
управление, как предполагается, имеет большую гибкость с точки зрения форматирования макета. Вы также можете использовать DataList
так как он обеспечивает такие свойства, как RepeatLayout
и RepeatDirection
это вы можете установить.
Вот краткий пример с DataList
:
<asp:DataList ID="DataList1" runat="server" RepeatColumns="2" RepeatDirection="Vertical">
<ItemTemplate>
<table>
<tr>
<td><asp:Image ID="imgProduct" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ProductImage") %>' style="width:100px; height:100px;" /></td>
<td>
<asp:Label ID="lblProduct" Text='<%# DataBinder.Eval(Container.DataItem, "ProductName") %>' runat="server" />
<br />
<asp:Label ID="lblPrice" Text='<%# DataBinder.Eval(Container.DataItem, "Price") %>' runat="server" />
<br />
<asp:TextBox ID="txtQty" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
Как вы можете видеть, на самом деле нет никакой фантазии о наценке выше. Он просто содержит в себе
DataList
управление с помощью
Image
,
TextBox
и
Label
элементы управления, определенные в нем. Вы также можете заметить, что каждый элемент управления привязан к полям, которые мы хотим отобразить. А теперь давайте продолжим и заселим
DataList
с образцом данных. Вот код, стоящий за частью ниже:
using System;
using System.Data;
namespace WebAppDemo {
public partial class Repeater : System.Web.UI.Page {
private DataTable GetSampleData() {
//NOTE: THIS IS JUST FOR DEMO
//If you are working with database
//You can query your actual data and fill it to the DataTable
DataTable dt = new DataTable();
DataRow dr = null;
//Create DataTable columns
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("ProductImage", typeof(string)));
dt.Columns.Add(new DataColumn("ProductName", typeof(string)));
dt.Columns.Add(new DataColumn("Price", typeof(string)));
//Create Row for each columns
dr = dt.NewRow();
dr["ID"] = 1;
dr["ProductName"] = "Product 1";
dr["ProductImage"] = "~/Images/Image1.jpg";
dr["Price"] = "100";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["ProductName"] = "Product 2";
dr["ProductImage"] = "~/Images/Image2.jpg";
dr["Price"] = "200";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["ProductName"] = "Product 3";
dr["ProductImage"] = "~/Images/Image3.jpg";
dr["Price"] = "50";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["ProductName"] = "Product 4";
dr["ProductImage"] = "~/Images/Image4.jpg";
dr["Price"] = "500";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["ProductName"] = "Product 5";
dr["ProductImage"] = "~/Images/Image5.jpg";
dr["Price"] = "70";
dt.Rows.Add(dr);
return dt;
}
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
DataList1.DataSource = GetSampleData();
DataList1.DataBind();
}
}
}
}
Вот и все.
Для работы с изображениями проверьте этот пост:
ASP.NET веб-формы: загрузка, проверка и отображение изображения