defaultcs.aspx.cs
来自「Telerik是很大的第三方软件制造商」· CS 代码 · 共 238 行
CS
238 行
using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Web;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Telerik.WebControls;
using Telerik.WebControls.RadUploadUtils;
namespace Telerik.UploadExamplesCSharp.PhotoGallery
{
public class DefaultCS : Telerik.QuickStart.XhtmlPage
{
#region Child controls
protected RadUpload upload1;
protected RadUploadProgressArea progressArea1;
protected Button btnUpload;
protected DataGrid gridCurrentImages;
protected Label lblNoCurrentImages;
#endregion
#region Private members
private static string _connectionString = null;
private const string CONNECTION_STRING_BASE = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User ID=;Password=;";
#endregion
#region Utility members
public const int MAX_THUMBNAIL_WIDTH = 60;
public const int MAX_THUMBNAIL_HEIGHT = 60;
public static string GetConnectionString(HttpRequest Request)
{
if (_connectionString == null)
{
_connectionString = string.Format(CONNECTION_STRING_BASE, Request.MapPath("./PhotoGallery.mdb"));
}
return _connectionString;
}
#endregion
#region Event Handlers
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
}
private void btnUpload_Click(object sender, System.EventArgs e)
{
UpdateDb(upload1.UploadedFiles);
BindGrid();
}
private void gridCurrentImages_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView currentData = (DataRowView)e.Item.DataItem;
HtmlAnchor haImageLink = (HtmlAnchor)e.Item.FindControl("haImageLink");
haImageLink.HRef = string.Format("./ShowImageCS.aspx?type=full&imgid={0}", currentData["ImageID"].ToString());
HtmlImage himgImage = (HtmlImage)e.Item.FindControl("himgImage");
himgImage.Src = string.Format("./ShowImageCS.aspx?type=thumb&imgid={0}", currentData["ImageID"].ToString());
}
}
private void gridCurrentImages_ItemCommand(object source, DataGridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int imageID = (int)gridCurrentImages.DataKeys[e.Item.ItemIndex];
DeleteImage(imageID);
if (gridCurrentImages.Items.Count > gridCurrentImages.PageSize &&
gridCurrentImages.Items.Count % gridCurrentImages.PageSize == 1)
{
gridCurrentImages.CurrentPageIndex = gridCurrentImages.CurrentPageIndex - 1;
}
BindGrid();
}
}
private void gridCurrentImages_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
gridCurrentImages.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
#endregion
#region Private methods
private void BindGrid()
{
DataTable table = GetImageList();
if (table.Rows.Count > 0)
{
lblNoCurrentImages.Visible = false;
gridCurrentImages.Visible = true;
gridCurrentImages.DataSource = table;
gridCurrentImages.DataBind();
}
else
{
gridCurrentImages.Visible = false;
lblNoCurrentImages.Visible = true;
}
}
private DataTable GetImageList()
{
OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
conn.Open();
OleDbCommand command = new OleDbCommand("SELECT ImageID, [Name], [Size] FROM Images", conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataTable toReturn = new DataTable();
adapter.Fill(toReturn);
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
return toReturn;
}
private void UpdateDb(UploadedFileCollection uploadedFiles)
{
OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
conn.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO Images ([Name], [Size], Thumbnail, [Image]) VALUES (?, ?, ?, ?)", conn);
foreach(UploadedFile file in uploadedFiles)
{
string tempFileName = Path.GetTempFileName();
file.SaveAs(tempFileName, true);
command.Parameters.Clear();
command.Parameters.Add("@Name", file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1));
command.Parameters.Add("@Size", file.ContentLength);
command.Parameters.Add("@Thumbnail", GetThumbnail(tempFileName));
command.Parameters.Add("@Image", GetImage(tempFileName));
command.ExecuteNonQuery();
if (File.Exists(tempFileName))
{
File.Delete(tempFileName);
}
}
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
private void DeleteImage(int imageID)
{
OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
conn.Open();
OleDbCommand command = new OleDbCommand("DELETE FROM Images WHERE ImageID = ?", conn);
command.Parameters.Add("@ImageID", imageID);
command.ExecuteNonQuery();
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
private byte[] GetThumbnail(string realFileName)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(realFileName);
int[] realThumbDimensions = GetProportionalThumbnailSize(originalImage.Width, originalImage.Height);
System.Drawing.Image.GetThumbnailImageAbort myCallback =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image thumbnail = originalImage.GetThumbnailImage(
realThumbDimensions[0],
realThumbDimensions[1],
myCallback,
IntPtr.Zero);
MemoryStream stream = new MemoryStream();
thumbnail.Save(stream, originalImage.RawFormat);
originalImage.Dispose();
return stream.ToArray();
}
public bool ThumbnailCallback()
{
return false;
}
private int[] GetProportionalThumbnailSize(int originalWidth, int originalHeight)
{
int realWidth = MAX_THUMBNAIL_WIDTH;
int realHeight = MAX_THUMBNAIL_HEIGHT;
if (originalWidth > originalHeight)
{
realHeight = (int)Math.Round((decimal)(originalHeight * MAX_THUMBNAIL_WIDTH / originalWidth));
}
else
{
realWidth = (int)Math.Round((decimal)(originalWidth * MAX_THUMBNAIL_HEIGHT / originalHeight));
}
return new int[]{realWidth, realHeight};
}
private byte[] GetImage(string realFileName)
{
FileStream fs = File.OpenRead(realFileName);
byte[] toReturn = new byte[fs.Length];
fs.Read(toReturn, 0, (int)fs.Length);
fs.Close();
return toReturn;
}
#endregion
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.btnUpload.Click += new EventHandler(btnUpload_Click);
this.gridCurrentImages.ItemDataBound += new DataGridItemEventHandler(gridCurrentImages_ItemDataBound);
this.gridCurrentImages.ItemCommand += new DataGridCommandEventHandler(gridCurrentImages_ItemCommand);
this.gridCurrentImages.PageIndexChanged +=new DataGridPageChangedEventHandler(gridCurrentImages_PageIndexChanged);
}
#endregion
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?