asp.net中的GridView如何加入FileUpload按钮? asp.net中的GridView如何加入FileUpload按钮?并实现上传图片(图片要重命名的)然后点自带的【更新按钮】把图片路径保存到数据库里?数据库表列 ID UserName UserImage哪位朋友帮忙写个完整代码啊 谢谢了~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 完整的源代码:ASPX 代码<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"><title>GridView 插入、删除、修改的例子</title></head><body><form id="form1" runat="server"><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnRowDataBound="GridView1_RowDataBound" ShowFooter="true"> <HeaderStyle BackColor="#ccff99" Font-Bold="true" /> <Columns> <asp:TemplateField HeaderText="姓名"> <ItemTemplate> <asp:PlaceHolder ID="LabelTitle" runat="server"> <%#Eval("Title") %></asp:PlaceHolder> <asp:TextBox ID="uTitle" runat="server" Text='<%#Eval("Title") %>' Visible="false"></asp:TextBox> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="NewTitle" runat="server"></asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="生日(yyyy-MM-dd格式)"> <ItemTemplate> <asp:PlaceHolder ID="LabelBirthday" runat="server"> <%#Eval("BirthDay", "{0:yyyy-MM-dd}")%></asp:PlaceHolder> <asp:TextBox ID="uBirthDay" runat="server" Text='<%#Eval("BirthDay", "{0:yyyy-MM-dd}")%> ' Visible="false" /> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="性别"> <ItemTemplate> <asp:PlaceHolder ID="LabelGender" runat="server"> <%#(Eval("Gender")).ToString() =="True"?"男":"女"%></asp:PlaceHolder> <asp:RadioButtonList ID="uGender" runat="server" RepeatDirection="Horizontal" Visible="false"> <asp:ListItem Text="男"></asp:ListItem> <asp:ListItem Text="女"></asp:ListItem> </asp:RadioButtonList> </ItemTemplate> <FooterTemplate> <asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal"> <asp:ListItem Selected="true" Text="男"></asp:ListItem> <asp:ListItem Text="女"></asp:ListItem> </asp:RadioButtonList> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="年级"> <ItemTemplate> <asp:PlaceHolder ID="LabelClassName" runat="server"> <%#Eval("ClassName")%></asp:PlaceHolder> <asp:DropDownList ID="uClassName" runat="server" Visible="false"> <asp:ListItem Text="小学" Value="小学"></asp:ListItem> <asp:ListItem Text="中学" Value="中学"></asp:ListItem> <asp:ListItem Text="高中" Value="高中"></asp:ListItem> <asp:ListItem Text="大学" Value="大学"></asp:ListItem> </asp:DropDownList> </ItemTemplate> <FooterTemplate> <asp:DropDownList ID="NewClassName" runat="server"> <asp:ListItem Text="小学" Value="小学"></asp:ListItem> <asp:ListItem Text="中学" Value="中学"></asp:ListItem> <asp:ListItem Text="高中" Value="高中"></asp:ListItem> <asp:ListItem Text="大学" Value="大学"></asp:ListItem> </asp:DropDownList> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="照片"> <ItemTemplate> <asp:PlaceHolder ID="LabelPhoto" runat="server"> <%# GetUserPhoto(Eval("PhotoPath")) %></asp:PlaceHolder> <asp:FileUpload ID="uPhoto" runat="server" Visible="false" /> </ItemTemplate> <FooterTemplate> <asp:FileUpload ID="AddPhoto" runat="server" /> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="操作"> <ItemTemplate> <asp:Panel ID="PanelNormal" runat="server"> <asp:Button ID="EditButton" runat="server" Text="修改" OnClick="EditClick" CommandArgument='<%#Eval("id") %>' /> <asp:Button ID="DeleteButton" runat="server" Text="删除" OnClick="DeleteClick" CommandArgument='<%#Eval("id") %>' /> </asp:Panel> <asp:Panel ID="PanelUpdate" runat="server" Visible="false"> <asp:Button ID="UpdateButton" runat="server" Text="更新" OnClick="UpdateClick" CommandArgument='<%#Eval("id") %>' /> <asp:Button ID="CancelButton" runat="server" Text="取消" OnClick="CancelClick" /> </asp:Panel> </ItemTemplate> <FooterTemplate> <asp:Button ID="AddButton" runat="server" Text="添加新纪录" OnClick="AddClick" /> </FooterTemplate> </asp:TemplateField> </Columns> <EmptyDataTemplate> <table cellspacing="0" rules="all" border="1" style="border-collapse: collapse;"> <tr> <th>姓名</th> <th>生日(yyyy-MM-dd格式)</th> <th>性别</th> <th>年级</th> <th>照片</th> <th>操作</th> </tr> <tr> <td> <asp:TextBox ID="NewTitle" runat="server"></asp:TextBox> </td> <td> <asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox> </td> <td> <asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal"> <asp:ListItem Selected="true" Text="男"></asp:ListItem> <asp:ListItem Text="女"></asp:ListItem> </asp:RadioButtonList> </td> <td> <asp:DropDownList ID="NewClassName" runat="server"> <asp:ListItem Text="小学" Value="小学"></asp:ListItem> <asp:ListItem Text="中学" Value="中学"></asp:ListItem> <asp:ListItem Text="高中" Value="高中"></asp:ListItem> <asp:ListItem Text="大学" Value="大学"></asp:ListItem> </asp:DropDownList> </td> <td> <asp:FileUpload ID="AddPhoto" runat="server" /> </td> <td> <asp:Button ID="b" runat="server" Text="添加学生" OnClick="AddClick" /> </td> </tr> </table> </EmptyDataTemplate></asp:GridView><div id="Pager" runat="server" style="text-align:left;padding:10px 0;"></div><asp:Label ID="ErrorMsg" runat="server" ForeColor="red"></asp:Label></form></body></html> 上传http://www.cnblogs.com/qiantuwuliang/archive/2009/08/21/1551200.html/// <summary>/// 获取一个图片按等比例缩小后的大小。/// </summary>/// <param name="maxWidth">需要缩小到的宽度</param>/// <param name="maxHeight">需要缩小到的高度</param>/// <param name="imageOriginalWidth">图片的原始宽度</param>/// <param name="imageOriginalHeight">图片的原始高度</param>/// <returns>返回图片按等比例缩小后的实际大小</returns>public static Size GetNewSize(int maxWidth, int maxHeight, int imageOriginalWidth, int imageOriginalHeight){ double w = 0.0; double h = 0.0; double sw = Convert.ToDouble(imageOriginalWidth); double sh = Convert.ToDouble(imageOriginalHeight); double mw = Convert.ToDouble(maxWidth); double mh = Convert.ToDouble(maxHeight); if (sw < mw && sh < mh) { w = sw; h = sh; } else if ((sw / sh) > (mw / mh)) { w = maxWidth; h = (w * sh) / sw; } else { h = maxHeight; w = (h * sw) / sh; } return new Size(Convert.ToInt32(w), Convert.ToInt32(h));} private int EditId = 0;private String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;";/// 显示图片,在图片不存在时显示一个 none.gifprivate string GetUserPhoto(object pathPhoto){ if (pathPhoto == DBNull.Value) { return "<img src='Images/none.gif'>"; } else { return "<img src='" + pathPhoto.ToString() + "'>"; }}/// <summary>/// 数据绑定的处理。在需要编辑时,显示出编辑框/// </summary>protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){ if (e.Row.RowType == DataControlRowType.DataRow) { if (EditId > 0) { //如果绑定数据源是DatarReader,则使用下面的方法: //System.Data.Common.DbDataRecord rowItem = (System.Data.Common.DbDataRecord)e.Row.DataItem; //如果绑定是 DataView,则使用此方法 System.Data.DataRowView rowItem = (System.Data.DataRowView)e.Row.DataItem; if (rowItem["id"].ToString().Equals(EditId.ToString())) { //隐藏显示的文字 PlaceHolder LabelTitle = e.Row.FindControl("LabelTitle") as PlaceHolder; LabelTitle.Visible = false; PlaceHolder LabelBirthday = e.Row.FindControl("LabelBirthday") as PlaceHolder; LabelBirthday.Visible = false; PlaceHolder LabelGender = e.Row.FindControl("LabelGender") as PlaceHolder; LabelGender.Visible = false; PlaceHolder LabelClassName = e.Row.FindControl("LabelClassName") as PlaceHolder; LabelClassName.Visible = false; PlaceHolder LabelPhoto = e.Row.FindControl("LabelPhoto") as PlaceHolder; LabelPhoto.Visible = false; //打开编辑框 TextBox uTitle = e.Row.FindControl("uTitle") as TextBox; uTitle.Visible = true; TextBox uBirthDay = e.Row.FindControl("uBirthDay") as TextBox; uBirthDay.Visible = true; RadioButtonList uGender = e.Row.FindControl("uGender") as RadioButtonList; uGender.Visible = true; DropDownList uClassName = e.Row.FindControl("uClassName") as DropDownList; uClassName.Visible = true; FileUpload uPhoto = e.Row.FindControl("uPhoto") as FileUpload; uPhoto.Visible = true; //赋原来的值 if (rowItem["Gender"] != DBNull.Value) { uGender.SelectedIndex = (Convert.ToBoolean(rowItem["Gender"]) ? 0 : 1); } if (rowItem["ClassName"] != DBNull.Value) { uClassName.Items.FindByText(rowItem["ClassName"].ToString()).Selected = true; } //显示编辑更新按钮 Panel PanelNormal = e.Row.FindControl("PanelNormal") as Panel; PanelNormal.Visible = false; Panel PanelUpdate = e.Row.FindControl("PanelUpdate") as Panel; PanelUpdate.Visible = true; } } }}/// <summary>/// 打开编辑框,将编辑标识传递到 EditId/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void EditClick(object sender, EventArgs e){ Button b = sender as Button; EditId = Convert.ToInt32(b.CommandArgument); GridViewRow dvr = b.NamingContainer as GridViewRow; EditId = (int)GridView1.DataKeys[dvr.DataItemIndex].Value; DataBind(); //Response.Write(GridView1.DataKeys[dvr.DataItemIndex].Value);}protected void UpdateClick(object sender, EventArgs e){ Button b = sender as Button; GridViewRow dvr = b.NamingContainer as GridViewRow; TextBox uTitle = dvr.FindControl("uTitle") as TextBox; string StudentTitle = uTitle.Text; string StudentBirthDay = ((TextBox)dvr.FindControl("uBirthDay")).Text; bool StudentGender = ((RadioButtonList)dvr.FindControl("uGender")).SelectedValue == "男" ? true : false; string StudentClassName = ((DropDownList)dvr.FindControl("uClassName")).SelectedValue; string StudentID = GridView1.DataKeys[dvr.RowIndex].Value.ToString(); string sql = ""; String PhotoPath = ""; bool HasFileUploaded = false; FileUpload oUpload = (FileUpload)dvr.FindControl("uPhoto"); if (oUpload.HasFile) { PhotoPath = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName); oUpload.SaveAs(Server.MapPath("~") + "\\" + PhotoPath); HasFileUploaded = true; } if (HasFileUploaded) { sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,"; sql += "Gender=@Gender,PhotoPath=@PhotoPath,ClassName=@ClassName Where id=@id"; } else { sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,"; sql += "Gender=@Gender,ClassName=@ClassName Where id=@id"; } OleDbConnection cn = new OleDbConnection(ConnectionString); cn.Open(); OleDbCommand cmd = new OleDbCommand(sql, cn); cmd.Parameters.AddWithValue("@Title", StudentTitle); cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay); cmd.Parameters.AddWithValue("@Gender", StudentGender); if (HasFileUploaded) { cmd.Parameters.AddWithValue("@PhotoPath", PhotoPath); } cmd.Parameters.AddWithValue("@ClassName", StudentClassName); cmd.Parameters.AddWithValue("@id", StudentID); cmd.ExecuteNonQuery(); cn.Close(); Response.Redirect(Request.Url.ToString());}/// <summary>/// 添加新记录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void AddClick(object sender, EventArgs e){ InsertNewRecord(sender, e);}/// <summary>/// 取消编辑/// </summary>protected void CancelClick(object sender, EventArgs e){ Response.Redirect(Request.UrlReferrer.ToString());} /// <summary>/// 删除记录/// </summary>protected void DeleteClick(object sender, EventArgs e){ Button b = sender as Button; int id = Convert.ToInt32(b.CommandArgument); OleDbConnection cn = new OleDbConnection(ConnectionString); cn.Open(); OleDbCommand cmd = new OleDbCommand("Delete From [Student] Where [id]=@id", cn); cmd.Parameters.AddWithValue("@id", id); cmd.ExecuteNonQuery(); cn.Close(); Response.Redirect(Request.Url.ToString());}/// <summary>/// 插入新记录的公共函数/// </summary>protected void InsertNewRecord(object sender, EventArgs e){ string StudentTitle = ((TextBox)(sender as Button).NamingContainer.FindControl("NewTitle")).Text; if (StudentTitle.Trim() == "") { ErrorMsg.Text = "请输入姓名"; return; } string StudentBirthDay = ((TextBox)(sender as Button).NamingContainer.FindControl("NewBirthDay")).Text; bool StudentGender = ((RadioButtonList) (sender as Button).NamingContainer.FindControl("NewGender")).SelectedValue == "男" ? true : false; string StudentClassName = ((DropDownList) (sender as Button).NamingContainer.FindControl("NewClassName")).SelectedValue; FileUpload oUpload = (FileUpload)(sender as Button).NamingContainer.FindControl("AddPhoto"); String FileName = ""; FileName = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName); oUpload.SaveAs(Server.MapPath("~") + "\\" + FileName); string sql = "Insert Into Student (Title,BirthDay,Gender,PhotoPath,ClassName)"; sql += " Values(@Title,@BirthDay,@Gender,@PhotoPath,@ClassName)"; OleDbConnection cn = new OleDbConnection(ConnectionString); cn.Open(); OleDbCommand cmd = new OleDbCommand(sql, cn); cmd.Parameters.AddWithValue("@Title", StudentTitle); cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay); cmd.Parameters.AddWithValue("@Gender", StudentGender); cmd.Parameters.AddWithValue("@PhotoPath", FileName); cmd.Parameters.AddWithValue("@ClassName", StudentClassName); cmd.ExecuteNonQuery(); cn.Close(); Response.Redirect(Request.FilePath.ToString());}protected void Page_Load(object sender, EventArgs e){ if (!Page.IsPostBack) { DataBind(); }} protected void DataBind(){ OleDbCommand cmd; String sql; OleDbConnection cn = new OleDbConnection(ConnectionString); cn.Open(); sql = "SELECT * FROM [Student] ORDER BY [id] DESC"; OleDbDataAdapter da = new OleDbDataAdapter(sql, cn); DataSet ds = new DataSet(); da.Fill(ds,"Student"); GridView1.DataSource = ds.Tables[0].DefaultView; GridView1.DataBind(); cn.Close();} 添加一个模板列,里面放个upload 迷惑求解 asp.net中 CS1061错误 请教个很郁闷的问题! vs2005, asp.net 做WEB网页时,DIV中间的图片与IE的框架之间有空白处,怎么办? 在命令窗口里打aspnet_regiis -c提示,命令无效 问题急,再问一次,在线等。这次给分100。在win2003中连接mssql的问题。 请教ASP.Net的团队开发方式 高手啊,请教一个关于下拉列表框的问题 由ASP.NET AJAX Timer控件引起的页面闪烁问题 在线等待,求解一正则表达式!!! 未把对象引用设置到实例 GridView处理千行列数据速度慢的问题
ASPX 代码
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>GridView 插入、删除、修改的例子</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
OnRowDataBound="GridView1_RowDataBound" ShowFooter="true">
<HeaderStyle BackColor="#ccff99" Font-Bold="true" />
<Columns>
<asp:TemplateField HeaderText="姓名">
<ItemTemplate>
<asp:PlaceHolder ID="LabelTitle" runat="server">
<%#Eval("Title") %></asp:PlaceHolder>
<asp:TextBox ID="uTitle" runat="server" Text='<%#Eval("Title") %>' Visible="false"></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="NewTitle" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="生日(yyyy-MM-dd格式)">
<ItemTemplate>
<asp:PlaceHolder ID="LabelBirthday" runat="server">
<%#Eval("BirthDay", "{0:yyyy-MM-dd}")%></asp:PlaceHolder>
<asp:TextBox ID="uBirthDay" runat="server" Text='<%#Eval("BirthDay", "{0:yyyy-MM-dd}")%> '
Visible="false" />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="性别">
<ItemTemplate>
<asp:PlaceHolder ID="LabelGender" runat="server">
<%#(Eval("Gender")).ToString() =="True"?"男":"女"%></asp:PlaceHolder>
<asp:RadioButtonList ID="uGender" runat="server" RepeatDirection="Horizontal" Visible="false">
<asp:ListItem Text="男"></asp:ListItem>
<asp:ListItem Text="女"></asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
<FooterTemplate>
<asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Selected="true" Text="男"></asp:ListItem>
<asp:ListItem Text="女"></asp:ListItem>
</asp:RadioButtonList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="年级">
<ItemTemplate>
<asp:PlaceHolder ID="LabelClassName" runat="server">
<%#Eval("ClassName")%></asp:PlaceHolder>
<asp:DropDownList ID="uClassName" runat="server" Visible="false">
<asp:ListItem Text="小学" Value="小学"></asp:ListItem>
<asp:ListItem Text="中学" Value="中学"></asp:ListItem>
<asp:ListItem Text="高中" Value="高中"></asp:ListItem>
<asp:ListItem Text="大学" Value="大学"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="NewClassName" runat="server">
<asp:ListItem Text="小学" Value="小学"></asp:ListItem>
<asp:ListItem Text="中学" Value="中学"></asp:ListItem>
<asp:ListItem Text="高中" Value="高中"></asp:ListItem>
<asp:ListItem Text="大学" Value="大学"></asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="照片">
<ItemTemplate>
<asp:PlaceHolder ID="LabelPhoto" runat="server">
<%# GetUserPhoto(Eval("PhotoPath")) %></asp:PlaceHolder>
<asp:FileUpload ID="uPhoto" runat="server" Visible="false" />
</ItemTemplate>
<FooterTemplate>
<asp:FileUpload ID="AddPhoto" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:Panel ID="PanelNormal" runat="server">
<asp:Button ID="EditButton" runat="server" Text="修改" OnClick="EditClick" CommandArgument='<%#Eval("id") %>' />
<asp:Button ID="DeleteButton" runat="server" Text="删除" OnClick="DeleteClick" CommandArgument='<%#Eval("id") %>' />
</asp:Panel>
<asp:Panel ID="PanelUpdate" runat="server" Visible="false">
<asp:Button ID="UpdateButton" runat="server" Text="更新" OnClick="UpdateClick" CommandArgument='<%#Eval("id") %>' />
<asp:Button ID="CancelButton" runat="server" Text="取消" OnClick="CancelClick" />
</asp:Panel>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="AddButton" runat="server" Text="添加新纪录" OnClick="AddClick" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<table cellspacing="0" rules="all" border="1" style="border-collapse: collapse;">
<tr>
<th>姓名</th>
<th>生日(yyyy-MM-dd格式)</th>
<th>性别</th>
<th>年级</th>
<th>照片</th>
<th>操作</th>
</tr>
<tr>
<td>
<asp:TextBox ID="NewTitle" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox>
</td>
<td>
<asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Selected="true" Text="男"></asp:ListItem>
<asp:ListItem Text="女"></asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:DropDownList ID="NewClassName" runat="server">
<asp:ListItem Text="小学" Value="小学"></asp:ListItem>
<asp:ListItem Text="中学" Value="中学"></asp:ListItem>
<asp:ListItem Text="高中" Value="高中"></asp:ListItem>
<asp:ListItem Text="大学" Value="大学"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:FileUpload ID="AddPhoto" runat="server" />
</td>
<td>
<asp:Button ID="b" runat="server" Text="添加学生" OnClick="AddClick" />
</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:GridView>
<div id="Pager" runat="server" style="text-align:left;padding:10px 0;"></div>
<asp:Label ID="ErrorMsg" runat="server" ForeColor="red"></asp:Label>
</form>
</body>
</html>
上传http://www.cnblogs.com/qiantuwuliang/archive/2009/08/21/1551200.html/// <summary>
/// 获取一个图片按等比例缩小后的大小。
/// </summary>
/// <param name="maxWidth">需要缩小到的宽度</param>
/// <param name="maxHeight">需要缩小到的高度</param>
/// <param name="imageOriginalWidth">图片的原始宽度</param>
/// <param name="imageOriginalHeight">图片的原始高度</param>
/// <returns>返回图片按等比例缩小后的实际大小</returns>
public static Size GetNewSize(int maxWidth, int maxHeight, int imageOriginalWidth, int imageOriginalHeight)
{
double w = 0.0;
double h = 0.0;
double sw = Convert.ToDouble(imageOriginalWidth);
double sh = Convert.ToDouble(imageOriginalHeight);
double mw = Convert.ToDouble(maxWidth);
double mh = Convert.ToDouble(maxHeight); if (sw < mw && sh < mh)
{
w = sw;
h = sh;
}
else if ((sw / sh) > (mw / mh))
{
w = maxWidth;
h = (w * sh) / sw;
}
else
{
h = maxHeight;
w = (h * sw) / sh;
} return new Size(Convert.ToInt32(w), Convert.ToInt32(h));
}
private int EditId = 0;
private String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;";
/// 显示图片,在图片不存在时显示一个 none.gifprivate string GetUserPhoto(object pathPhoto)
{
if (pathPhoto == DBNull.Value)
{
return "<img src='Images/none.gif'>";
}
else
{
return "<img src='" + pathPhoto.ToString() + "'>";
}
}
/// <summary>
/// 数据绑定的处理。在需要编辑时,显示出编辑框
/// </summary>protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (EditId > 0)
{
//如果绑定数据源是DatarReader,则使用下面的方法:
//System.Data.Common.DbDataRecord rowItem = (System.Data.Common.DbDataRecord)e.Row.DataItem;
//如果绑定是 DataView,则使用此方法
System.Data.DataRowView rowItem = (System.Data.DataRowView)e.Row.DataItem;
if (rowItem["id"].ToString().Equals(EditId.ToString()))
{
//隐藏显示的文字
PlaceHolder LabelTitle = e.Row.FindControl("LabelTitle") as PlaceHolder;
LabelTitle.Visible = false;
PlaceHolder LabelBirthday = e.Row.FindControl("LabelBirthday") as PlaceHolder;
LabelBirthday.Visible = false;
PlaceHolder LabelGender = e.Row.FindControl("LabelGender") as PlaceHolder;
LabelGender.Visible = false;
PlaceHolder LabelClassName = e.Row.FindControl("LabelClassName") as PlaceHolder;
LabelClassName.Visible = false;
PlaceHolder LabelPhoto = e.Row.FindControl("LabelPhoto") as PlaceHolder;
LabelPhoto.Visible = false; //打开编辑框
TextBox uTitle = e.Row.FindControl("uTitle") as TextBox;
uTitle.Visible = true; TextBox uBirthDay = e.Row.FindControl("uBirthDay") as TextBox;
uBirthDay.Visible = true; RadioButtonList uGender = e.Row.FindControl("uGender") as RadioButtonList;
uGender.Visible = true; DropDownList uClassName = e.Row.FindControl("uClassName") as DropDownList;
uClassName.Visible = true; FileUpload uPhoto = e.Row.FindControl("uPhoto") as FileUpload;
uPhoto.Visible = true; //赋原来的值
if (rowItem["Gender"] != DBNull.Value)
{
uGender.SelectedIndex = (Convert.ToBoolean(rowItem["Gender"]) ? 0 : 1);
} if (rowItem["ClassName"] != DBNull.Value)
{
uClassName.Items.FindByText(rowItem["ClassName"].ToString()).Selected = true;
} //显示编辑更新按钮
Panel PanelNormal = e.Row.FindControl("PanelNormal") as Panel;
PanelNormal.Visible = false; Panel PanelUpdate = e.Row.FindControl("PanelUpdate") as Panel;
PanelUpdate.Visible = true;
}
}
}
}/// <summary>
/// 打开编辑框,将编辑标识传递到 EditId
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void EditClick(object sender, EventArgs e)
{
Button b = sender as Button;
EditId = Convert.ToInt32(b.CommandArgument); GridViewRow dvr = b.NamingContainer as GridViewRow;
EditId = (int)GridView1.DataKeys[dvr.DataItemIndex].Value;
DataBind();
//Response.Write(GridView1.DataKeys[dvr.DataItemIndex].Value);}
protected void UpdateClick(object sender, EventArgs e)
{
Button b = sender as Button;
GridViewRow dvr = b.NamingContainer as GridViewRow;
TextBox uTitle = dvr.FindControl("uTitle") as TextBox; string StudentTitle = uTitle.Text;
string StudentBirthDay = ((TextBox)dvr.FindControl("uBirthDay")).Text;
bool StudentGender = ((RadioButtonList)dvr.FindControl("uGender")).SelectedValue == "男" ? true : false;
string StudentClassName = ((DropDownList)dvr.FindControl("uClassName")).SelectedValue;
string StudentID = GridView1.DataKeys[dvr.RowIndex].Value.ToString();
string sql = "";
String PhotoPath = "";
bool HasFileUploaded = false; FileUpload oUpload = (FileUpload)dvr.FindControl("uPhoto");
if (oUpload.HasFile)
{
PhotoPath = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName);
oUpload.SaveAs(Server.MapPath("~") + "\\" + PhotoPath);
HasFileUploaded = true;
} if (HasFileUploaded)
{
sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,";
sql += "Gender=@Gender,PhotoPath=@PhotoPath,ClassName=@ClassName Where id=@id";
}
else
{
sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,";
sql += "Gender=@Gender,ClassName=@ClassName Where id=@id";
} OleDbConnection cn = new OleDbConnection(ConnectionString);
cn.Open();
OleDbCommand cmd = new OleDbCommand(sql, cn); cmd.Parameters.AddWithValue("@Title", StudentTitle);
cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay);
cmd.Parameters.AddWithValue("@Gender", StudentGender);
if (HasFileUploaded)
{
cmd.Parameters.AddWithValue("@PhotoPath", PhotoPath);
}
cmd.Parameters.AddWithValue("@ClassName", StudentClassName);
cmd.Parameters.AddWithValue("@id", StudentID);
cmd.ExecuteNonQuery();
cn.Close(); Response.Redirect(Request.Url.ToString());}
/// <summary>
/// 添加新记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void AddClick(object sender, EventArgs e)
{
InsertNewRecord(sender, e);
}/// <summary>
/// 取消编辑
/// </summary>
protected void CancelClick(object sender, EventArgs e)
{
Response.Redirect(Request.UrlReferrer.ToString());
}
/// <summary>
/// 删除记录
/// </summary>
protected void DeleteClick(object sender, EventArgs e)
{
Button b = sender as Button;
int id = Convert.ToInt32(b.CommandArgument);
OleDbConnection cn = new OleDbConnection(ConnectionString);
cn.Open();
OleDbCommand cmd = new OleDbCommand("Delete From [Student] Where [id]=@id", cn);
cmd.Parameters.AddWithValue("@id", id);
cmd.ExecuteNonQuery();
cn.Close();
Response.Redirect(Request.Url.ToString());
}/// <summary>
/// 插入新记录的公共函数
/// </summary>
protected void InsertNewRecord(object sender, EventArgs e)
{
string StudentTitle = ((TextBox)(sender as Button).NamingContainer.FindControl("NewTitle")).Text;
if (StudentTitle.Trim() == "")
{
ErrorMsg.Text = "请输入姓名";
return;
}
string StudentBirthDay = ((TextBox)(sender as Button).NamingContainer.FindControl("NewBirthDay")).Text;
bool StudentGender = ((RadioButtonList)
(sender as Button).NamingContainer.FindControl("NewGender")).SelectedValue == "男" ? true : false;
string StudentClassName = ((DropDownList)
(sender as Button).NamingContainer.FindControl("NewClassName")).SelectedValue;
FileUpload oUpload = (FileUpload)(sender as Button).NamingContainer.FindControl("AddPhoto");
String FileName = "";
FileName = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName);
oUpload.SaveAs(Server.MapPath("~") + "\\" + FileName);
string sql = "Insert Into Student (Title,BirthDay,Gender,PhotoPath,ClassName)";
sql += " Values(@Title,@BirthDay,@Gender,@PhotoPath,@ClassName)";
OleDbConnection cn = new OleDbConnection(ConnectionString);
cn.Open(); OleDbCommand cmd = new OleDbCommand(sql, cn);
cmd.Parameters.AddWithValue("@Title", StudentTitle);
cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay);
cmd.Parameters.AddWithValue("@Gender", StudentGender);
cmd.Parameters.AddWithValue("@PhotoPath", FileName);
cmd.Parameters.AddWithValue("@ClassName", StudentClassName); cmd.ExecuteNonQuery();
cn.Close();
Response.Redirect(Request.FilePath.ToString());
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataBind();
}
}
protected void DataBind()
{
OleDbCommand cmd;
String sql;
OleDbConnection cn = new OleDbConnection(ConnectionString);
cn.Open();
sql = "SELECT * FROM [Student] ORDER BY [id] DESC";
OleDbDataAdapter da = new OleDbDataAdapter(sql, cn);
DataSet ds = new DataSet();
da.Fill(ds,"Student"); GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
cn.Close();}