DataList,PageDataSource打造简单的相册
我们一般可以使用 PageDataSource类来对Repeter,DataList等控件进行分页。我们同样也可以利用它来打造一个支持分页的简单的相册。
这个是页面源码,显示图片:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div align="center">
<asp:DataList ID="MainAlbum" runat="server" BackColor="#CCCCCC" BorderColor="#999999"
BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black"
GridLines="Both" RepeatColumns="4" RepeatDirection="Horizontal">
<FooterStyle BackColor="#CCCCCC" />
<SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="White" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<ItemTemplate>
<div>
<a href='<%#"Photos/"+Eval("Name") %>' target="_blank" />
<asp:Image ID="Image1" runat="server" width="200" Height="160" ImageUrl='<%#"Photos/"+Eval("Name") %>' />
</div>
</ItemTemplate>
</asp:DataList></div>
<div align="center">
<asp:Label ID="lblPageCount" runat="server"></asp:Label>
<asp:Label ID="lblCount" runat="server"></asp:Label>
<asp:LinkButton ID="lbtnPreview" runat="server" Text="上一页" OnClick="lbtnPreview_Click"></asp:LinkButton>
<asp:LinkButton ID="lbtnNext" runat="server" Text="下一页" OnClick="lbtnNext_Click"></asp:LinkButton>
</div>
</form>
显示图片的后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblCount.Text = "1";
BindPhotos();
}
}
private void BindPhotos()
{
//图片路径
string ImagePath = Server.MapPath("~/Photos/");
DirectoryInfo ImageFile = new DirectoryInfo(ImagePath);
//得到目录下的所有图片
FileInfo[] FileArray = ImageFile.GetFiles("*.jpg");
DataTable dtPhoto = new DataTable("Album");
DataColumn colSmall = new DataColumn("Name");
DataColumn colNormal = new DataColumn("Photo");
dtPhoto.Columns.Add(colSmall);
dtPhoto.Columns.Add(colNormal);
//将图片存入tabele中
for (int i = 0; i < (FileArray.Length); i++)
{
DataRow Row = dtPhoto.NewRow();
Row["Name"] = FileArray[i].Name;
Row["Photo"] = "./Photos/" + FileArray[i].Name;
dtPhoto.Rows.Add(Row);
}
//这里就是分页的代码
PagedDataSource Source = new PagedDataSource();
Source.AllowPaging = true;
Source.DataSource = dtPhoto.DefaultView;
Source.PageSize = 12;
int CurrentPage = Convert.ToInt32(lblCount.Text);
Source.CurrentPageIndex = CurrentPage - 1;
lbtnPreview.Enabled = true;
lbtnNext.Enabled = true;
if (CurrentPage == 1)
{
lbtnPreview.Enabled = false;
}
if (CurrentPage == Source.PageCount)
{
lbtnNext.Enabled = false;
}
lblPageCount.Text = "共"+Source.PageCount+"页,当前为";
MainAlbum.DataSource = Source;
//MainAlbum.DataSource = ImageFile.GetFiles("*.jpg");
MainAlbum.DataBind();
}
//下一页
protected void lbtnNext_Click(object sender, EventArgs e)
{
lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text) + 1);
BindPhotos();
}
//上一页
protected void lbtnPreview_Click(object sender, EventArgs e)
{
lblCount.Text = Convert.ToString(Convert.ToInt32(lblCount.Text) - 1);
BindPhotos();
}
批量上传的代码:
protected void btnMultiple_Click(object sender, EventArgs e)
{
string FilePath = Server.MapPath("~/Photos/");
HttpFileCollection UploadFile = Request.Files;
if (FileUpload1.HasFile || FileUpload2.HasFile || FileUpload3.HasFile || FileUpload4.HasFile || FileUpload5.HasFile)
{
for (int i = 0; i < UploadFile.Count; i++)
{
HttpPostedFile PostFile = UploadFile[i];
try
{
if (PostFile.ContentLength > 0)
{
string FileNames = PostFile.FileName;
string SingleName = FileNames.Substring(FileNames.LastIndexOf("\") + 1);
PostFile.SaveAs(FilePath + SingleName);
}
}
catch (Exception ex)
{
Assistant.AlertMessage(ex.Message, this);
}
}
Response.Redirect("~/MainAlbum.aspx");
}
else
{
Assistant.AlertMessage("请输入要上传的文件", this);
}
}
浙公网安备 33010602011771号