قرار دادن ListView از پایگاه داده و ستون های تکراری به صورت افقی با استفاده از GroupTemplate در Asp.net
با سلام در این مقاله توضیح خواهیم داد که چگونه ListView را از پایگاه داده و نحوه استفاده از Items ListView را به صورت افقی با استفاده از ویژگی GroupItemCount تکرار کنید.
پایگاه داده و رشته اتصال
برای این کار باید پایگاه داده Northwind را با استفاده از لینک زیر دانلود کنید
دانلود Northwind پایگاه داده
در زیر رشته اتصال از فایل Web.Config است
<connectionStrings>
<add name="conStr" connectionString="Data Source=.\SQLExpress;
database=Northwind;Integrated Security=true"/>
connectionStrings>
کد ListView
در زیر کد ListView است که در آن ستون های جدول مشتری را محدود کرده ایم.
<asp:ListView ID="ListView1" runat="server" GroupItemCount="3" GroupPlaceholderID="groupPlaceHolder1"
ItemPlaceholderID="itemPlaceHolder1">
<LayoutTemplate>
<table>
<asp:PlaceHolder runat="server" ID="groupPlaceHolder1">asp:PlaceHolder>
table>
LayoutTemplate>
<GroupTemplate>
<tr>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder1">asp:PlaceHolder>
tr>
GroupTemplate>
<ItemTemplate>
<td>
<table cellpadding="2" cellspacing="0" border="1" style="width: 200px; height: 100px;
border: dashed 2px #04AFEF; background-color: #B0E2F5">
<tr>
<td>
<b><u><span class="name">
<%# Eval("ContactName") %>span>u>b>
td>
tr>
<tr>
<td>
<b>City: b><span class="city"><%# Eval("City") %>span><br />
<b>Postal Code: b><span class="postal"><%# Eval("PostalCode") %>span><br />
<b>Country: b><span class="country"><%# Eval("Country")%>span><br />
<b>Phone: b><span class="phone"><%# Eval("Phone")%>span><br />
<b>Fax: b><span class="fax"><%# Eval("Fax")%>span><br />
td>
tr>
table>
td>
ItemTemplate>
asp:ListView>
ستون های تکراری در کنترل ListView به صورت افقی
این مفهوم در ListView مستلزم درک درست نیست. سه قالب اصلی وجود دارد که این کار را انجام میدهد . در اینجا استفاده از HTML < table > را برای تکرار ستون به صورت افقی انجام می دهیم
1. < ItemTemplate > - این شامل اقلام DataBound واقعی است که فرم بانک اطلاعاتی خواهد بود، مانند ItemTemplate از GridView یا کنترل DataList. در این بخش از ListView تمام محتویاتی را که در HTML < table > < td > درج شده است، خواهید داشت .
2. < GroupTemplate > - این برای تکرار موارد ListView به صورت افقی است . و با ویژگی GroupItemCount مرتبط است. این بخش از ListView یک PlaceHolder را در تگ های HTML < table > < tr > محصور خواهد کرد . GroupTemplate را می توان به عنوان یک ردیف از Items ListView تصور کرد و تعداد آیتم ها در یک ردیف توسط PropertyItemCount تعیین می شود .
3. < LayoutTemplate > - این تگ طرح لیست کل View را تعیین می کند. این بخش از ListView دارای یک PlaceHolder در تگ های HTML < table > محسوب می شود .
فضاهای نام
C #
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
اتصال کنترل ListView با داده ها
کد زیر مربوط به کنترل ListView با داده ها است.
C #
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListView1.DataSource = this.GetData();
ListView1.DataBind();
}
}
private DataSet GetData()
{
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
string query = "SELECT top 10 * FROM Customers";
SqlCommand cmd = new SqlCommand(query);
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
return ds;
}
}
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
ListView1.DataSource = Me.GetData()
ListView1.DataBind()
End If
End Sub
Private Function GetData() As DataSet
Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim query As String = "SELECT top 10 * FROM Customers"
Dim cmd As New SqlCommand(query)
Using con As New SqlConnection(conString)
Using sda As New SqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Using ds As New DataSet()
sda.Fill(ds)
Return ds
End Using
End Using
End Using
End Function