??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
{
OracleConnection conn = this.Conn();
OracleCommand cmd = new OracleCommand("select * from Supplier", conn);
OracleDataAdapter sda = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds, "Supplier");
string[] SuppId = new string[ds.Tables["Supplier"].Rows.Count];
for (int i = 0; i < ds.Tables["Supplier"].Rows.Count; i++)
{
SuppId[i] = ds.Tables["Supplier"].Rows[i][0].ToString();
}
this.gvSupplier.DataSource = ds.Tables["Supplier"];
this.gvSupplier.DataKeyNames[0] = "SuppId";
this.gvSupplier.DataBind();
this.lblPageIndex.Text = Convert.ToString(int.Parse(this.gvSupplier.PageIndex.ToString()) + 1);
this.lblTotalPage.Text = this.gvSupplier.PageCount.ToString();
this.lblCount.Text = this.GetTotalCount().ToString();
}
//分页触发的事?br>protected void gvSupplier_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.gvSupplier.PageIndex = e.NewPageIndex;
this.BindGvSupplier();
this.lblPageIndex.Text = Convert.ToString(int.Parse(this.gvSupplier.PageIndex.ToString()) + 1);
this.cbAllSelect_CheckedChanged(this.cbAllSelect, e);
}
//删除按钮触发的事?br>protected void gvSupplier_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = e.RowIndex;
GridViewRow gvr = this.gvSupplier.Rows[id];
int SuppId=int.Parse(((HyperLink)(gvr.Cells[7].Controls[0])).Text.ToString());
string sqlString = "delete from Supplier where SuppId=" + SuppId;
//如果本页只有一条数据,删除后要向前M?br>if (this.gvSupplier.Rows.Count == 1)
{
if (this.gvSupplier.PageIndex > 1)
{
this.gvSupplier.PageIndex--;
}
}
int result = ExecuteSql(sqlString);
if (result == 1)
{
this.Alert("你成功删除一条数?, this.Page);
}
this.BindGvSupplier();
this.BindGvSupplier();
}
//l定删除按钮的确认提C?br>protected void gvSupplier_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton myLb = (LinkButton)(e.Row.Cells[8].Controls[1]);
myLb.Attributes.Add("onclick","javascript:return confirm('你确认删?+e.Row.Cells[0].Text+"?')");
//鼠标l过时改变行的颜?br>e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ffffe7'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='transparent'");
}
}
//执行一条Oracle语句
private int ExecuteSql(String sqlString)
{
//try
//{
OracleConnection conn = this.Conn();
conn.Open();
OracleCommand cmd = new OracleCommand(sqlString, conn);
int effectedLine = cmd.ExecuteNonQuery();
conn.Close();
return effectedLine;
//}
//catch
//{
// return 0;
//}
}
//点击~辑按钮时触发的事g
protected void gvSupplier_RowEditing(object sender, GridViewEditEventArgs e)
{
string s = this.gvSupplier.DataKeys[e.NewEditIndex][1].ToString();
this.txtAddr1.Text = "dddd" + s;
this.gvSupplier.EditIndex = e.NewEditIndex;
this.BindGvSupplier();
}
//点击取消按钮时触发的事g
protected void gvSupplier_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.gvSupplier.EditIndex = -1;
this.BindGvSupplier();
}
//点击更新按钮时触发的事g
protected void gvSupplier_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int id = e.RowIndex;
GridViewRow gvr = this.gvSupplier.Rows[id];
int suppId = int.Parse(((HyperLink)(gvr.Cells[7].Controls[0])).Text.ToString());
string name = ((TextBox)gvr.Cells[0].Controls[0]).Text.ToString();
string status = ((TextBox)gvr.Cells[1].Controls[0]).Text.ToString();
string addr1 = ((TextBox)gvr.Cells[2].Controls[0]).Text.ToString();
string addr2 =((TextBox) gvr.Cells[3].Controls[0]).Text.ToString();
string city = ((TextBox)gvr.Cells[4].Controls[0]).Text.ToString();
string state = ((TextBox)gvr.Cells[5].Controls[0]).Text.ToString();
string zip=((TextBox)gvr.Cells[6].Controls[0]).Text.ToString();
string sqlString = "update Supplier set Name='" + name + "',Status='" + status + "',Addr1='" + addr1 + "',Addr2='" + addr2 + "',City='" + city + "',State='" + state + "',Zip='" + zip + "' where SuppId=" + suppId;
int result = ExecuteSql(sqlString);
if (result == 1)
{
//......
}
this.gvSupplier.EditIndex = -1;
this.BindGvSupplier();
}
Top
回复人:EvilYangs(EvilYang) ( ) 信誉Q?00 2006-7-14 15:45:21 得分:0
?
//增加一条记?br>protected void btnAdd_Click(object sender, EventArgs e)
{
string name = this.txtName.Text.ToString();
string status = this.txtStatus.Text.ToString();
string addr1 = this.txtAddr1.Text.ToString();
string addr2 = this.txtAddr2.Text.ToString();
string city = this.txtCity.Text.ToString();
string state = this.txtState.Text.ToString();
string zip = this.txtZip.Text.ToString();
string sqlString = "insert into Supplier values(SQSuppId.Nextval,'" + name + "','" + status + "','" + addr1 + "','" + addr2 + "','" + city + "','" + state + "','" + zip + "')";
if (this.ExecuteSql(sqlString) == 1)
{
this.Alert("你成功添加一条数?, this.Page);
}
else
{
this.Alert("d未成功!", this.Page);
}
this.BindGvSupplier();
}
//查看共有多少条数?br>private int GetTotalCount()
{
//try
//{
OracleConnection conn = this.Conn();
conn.Open();
OracleCommand cmd = new OracleCommand("select count(*) from Supplier", conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
return count;
//}
//catch
//{
// return 0;
//}
}
//弹出警告H口
public void Alert(string str_Message, Page page)
{
page.RegisterStartupScript("", "<script>alert('" + str_Message + "');</script>");
}
//弹出认对话?br>public void Confirm(string str_Message, string btn, Page page)
{
page.RegisterStartupScript("", "<script> if (confirm('" + str_Message + "')==true){document.forms(0)." + btn + ".click();}</script>");
}
protected void cbAllSelect_CheckedChanged(object sender, EventArgs e)
{
for(int i=0;i<this.gvSupplier.Rows.Count;i++)
{
CheckBox cbSelect=(CheckBox)(gvSupplier.Rows[i].Cells[10].FindControl("cbSelect"));
cbSelect.Checked=this.cbAllSelect.Checked;
}
}
//当点d除按钮时删除所有checkbox被选中的数?br>protected void btnDel_Click(object sender, EventArgs e)
{
//如果用户认触发btnRealDel的事?br>this.Confirm("你真的要删除你所选的数据么?", "btnRealDel", this.Page);
}
//真实的删除操?br>public void btnRealDel_Click(object sender, EventArgs e)
{
int count = 0;
for (int i = 0; i < this.gvSupplier.Rows.Count; i++)
{
CheckBox myCb = (CheckBox)(this.gvSupplier.Rows[i].Cells[10].FindControl("cbSelect"));
if (myCb.Checked)
{
count++;
HyperLink hl = (HyperLink)(this.gvSupplier.Rows[i].Cells[7].Controls[0]);
int suppId = int.Parse(hl.Text.ToString());
string sqlString = "delete from Supplier where SuppId=" + suppId;
this.ExecuteSql(sqlString);
}
}
if (count > 0)
{
this.Alert("你成功删除了" + count + "条数?, this.Page);
this.BindGvSupplier();
}
}
如果客户提交?按F5h怎么?
使用Session
在提交的面也就是数据库处理之前Q?/font>
if session("ok")=true then
response.write "错误Q正在提?
response.end
end if
数据处理完后Q修改session("ok")=false?/p>
数据处理成功马上Redirect到另外一个页?/p>
操作后刷新的是个问题,你可以用蟩转页面、关闭本面Q如果是有参数据条g来控制的Q那应该好做了Q可以直接修改window.location的|把参数全部改掉,q样差不多了?
~点Q简单地q用Response.Redirect不再有效,因ؓ用户从一个页面{到另一个页面,我们都必ȝ客户端代码清除location.history。注意,q种Ҏ清除的是最后一个访问历史记录,而不是全部的讉K记录?点击后退按钮Q再点击后退按钮Q你可以看到q时打开的是本页面之前的面Q(当然Q这是在你的客户端启用了JavaScript功能的条件下。)
如果客户按后退Q怎么办?
防止|页后退--止~存
我们在进行数据库d操作的时候,如果允许后退Q而正巧有h了页面,׃再次执行d操作Q无疑这不是我们需要的Q像一般网上很多禁止缓存的代码Q有时ƈ不可靠,q时你只要在操作的页面加上就可以了,在网늚里指定要定向的新,再点后退Q看是不是不会再退到刚才的操作面了,实际上已l把q个历史l删除了
ASPQ?br />Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
ASP.NETQ?br />Response.Buffer=true;
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";
I竟怎样才能"用"览器的后退按钮Q或者“怎样才能防止用户点击后退按钮q回以前览q的面Q?/p>
遗憾的是Q我们无法禁用浏览器的后退按钮?/p>
防止|页后退--新开H口
用window.open弹出表单面Q点提交后关闭该;处理提交的ASP也是用弹出Q设定表单的target,Ҏ交时window.open("XXX.asp","_blank"),然后用JS来提交表单,完成后window.close()Q?br />单的_是提交表单的时候弹出新H口Q关闭本H口。对于window.open()打开的窗口怎么后退Q能后退到哪里去Q?/p>
呵呵Q罗嗦了一堆废话,知道怎么处理了么Q合运用客L脚本和服务器端脚本?br />
1、如何解x件上传大的限制
2、以文g形式保存到服务器
3、{换成二进制字节流保存到数据库以及下蝲Ҏ
4、上传Internet上的资源
W一部分Q?
首先我们来说一下如何解决ASP.net中的文g上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大限制ؓ2MQ一般情况下Q我们可以采用更改Web.Config文g来自定义最大文件大,如下Q?
q样上传文g的最大值就变成?MQ但q样q不能让我们无限的扩?MaxRequestLength的|因ؓASP.NET会将全部文g载入内存后,再加以处理。解决的Ҏ是利用隐含的 HttpWorkerRequestQ用它的GetPreloadedEntityBody和ReadEntityBodyҎ从IIS为ASP.NET 建立的pipe里分块读取数据。实现方法如下:
IServiceProvidERProvider=(IServiceProvider)HttpContext.Current;
HttpWorkerRequestwr=(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
byte[]bs=wr.GetPreloadedEntityBody();
.
if(!wr.IsEntireEntityBodyIsPreloaded())
{
intn=1024;
byte[]bs2=newbyte[n];
while(wr.ReadEntityBody(bs2,n)>0)
{
..
}
}
q样可以解决了大文件的上传问题了?
W二部分Q?/p>
下面我们来介l如何以文g形式客L的一个文件上传到服务器ƈq回上传文g的一些基本信息?
首先我们定义一个类Q用来存储上传的文g的信息(q回旉要)?
public class FileUpLoad
{
public FileUpLoad()
{}
/**////
/// 上传文g名称
/// BR> public string FileName
{
get
{
return fileName;
}
set
{
fileName = value;
}
}
private string fileName;
/**////
/// 上传文g路径
/// BR> public string FilePath
{
get
{
return filepath;
}
set
{
filepath = value;
}
}
private string filepath;
/**////
/// 文g扩展?
/// BR> public string FileExtension
{
get
{
return fileExtension;
}
set
{
fileExtension = value;
}
}
private string fileExtension;
}
另外我们q可以在配置文g中限制上传文件的格式(App.Config)Q?/p>
Q?XML version="1.0" encoding="gb2312" ?>
QApplication>
QFileUpLoad>
QFormat>.jpg|.gif|.png|.bmp
Q?FileUpLoad>
Q?Application>
q样我们可以开始写我们的上传文件的Ҏ了,如下Q?
public FileUpLoad UpLoadFile(HtmlInputFile InputFile,string filePath,string myfileName,bool isRandom)
{
FileUpLoad fp = new FileUpLoad();
string fileName,fileExtension;
string saveName;
//
//建立上传对象
//
HttpPostedFile postedFile = InputFile.PostedFile;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
fileExtension = System.IO.Path.GetExtension(fileName);
//
//Ҏcd定文g格式
//
AppConfig app = new AppConfig();
string format = app.GetPath("FileUpLoad/Format");
//
//如果格式都不W合则返?
//
if(format.IndexOf(fileExtension)==-1)
{
throw new ApplicationException("上传数据格式不合?);
}
//
//Ҏ日期和随机数生成随机的文件名
//
if(myfileName != string.Empty)
{
fileName = myfileName;
}
if(isRandom)
{
Random objRand = new Random();
System.DateTime date = DateTime.Now;
//生成随机文g?
saveName = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + date.Hour.ToString() + date.Minute.ToString() + date.Second.ToString() + Convert.ToString(objRand.Next(99)*97 + 100);
fileName = saveName + fileExtension;
}
string phyPath = HttpContext.Current.Request.MapPath(filePath);
//判断路径是否存在,若不存在则创\?
DirectoryInfo upDir = new DirectoryInfo(phyPath);
if(!upDir.Exists)
{
upDir.Create();
}
//
//保存文g
//
try
{
postedFile.SaveAs(phyPath + fileName);
fp.FilePath = filePath + fileName;
fp.FileExtension = fileExtension;
fp.FileName = fileName;
}
catch
{
throw new ApplicationException("上传p|!");
}
//q回上传文g的信?
return fp;
}
然后我们在上传文件的时候就可以调用q个Ҏ了,返回的文g信息保存到数据库中,至于下蝲Q就直接打开那个路径OK了?
W三部分Q?/p>
q里我们主要说一下如何以二进制的形式上传文g以及下蝲。首先说上传Q方法如下:
public byte[] UpLoadFile(HtmlInputFile f_IFile)
{
//获取由客L指定的上传文件的讉K
HttpPostedFile upFile=f_IFile.PostedFile;
//得到上传文g的长?
int upFileLength=upFile.ContentLength;
//得到上传文g的客LMIMEcd
string contentType = upFile.ContentType;
byte[] FileArray=new Byte[upFileLength];
Stream fileStream=upFile.InputStream;
fileStream.Read(FileArray,0,upFileLength);
return FileArray;
}
q个Ҏq回的就是上传的文g的二q制字节,q样我们可以将它保存到数据库了。下面说一下这UŞ式的下蝲Q也怽会想到这U方式的下蝲是新徏一?aspx面Q然后在它的Page_Load()事g里取Zq制字节,然后再读出来可以了Q其实这U方法是不可取的Q在实际的运用中也许会出现无法打开某站点的错误Q我一般采用下面的ҎQ?
首先Q在Web.config中加入:
Qadd verb="*" path="openfile.aspx" type="RuixinOA.Web.BaseClass.OpenFile, RuixinOA.Web"/>
q表C我打开openfile.aspxq个面Ӟpȝ׃自动转到执行RuixinOA.Web.BaseClass.OpenFile q个c里的方法,具体实现如下Q?
using System;
using System.Data;
using System.Web;
using System.IO;
using Ruixin.WorkFlowDB;
using RXSuite.Base;
using RXSuite.Component;
using RuixinOA.BusinessFacade;
namespace RuixinOA.Web.BaseClass
{
/**////
/// NetUFile 的摘要说明?
/// BR> public class OpenFile : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//从数据库中取下蝲的文件信?
RuixinOA.BusinessFacade.RX_OA_FileManager os = new RX_OA_FileManager();
EntityData data = os.GetFileDetail(id);
if(data != null && data.Tables["RX_OA_File"].Rows.Count >0)
{
DataRow dr = (DataRow)data.Tables["RX_OA_File"].Rows[0];
context.Response.Buffer = true;
context.Response.Clear();
context.Response.ContentType = dr["CContentType"].ToString();
context.Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(dr["CTitle"].ToString()));
context.Response.BinaryWrite((Byte[])dr["CContent"]);
context.Response.Flush();
context.Response.End();
}
}
public bool IsReusable
{
get { return true;}
}
}
}
执行上面的方法后Q系l会提示用户选择直接打开q是下蝲。这一部分我们p到这里?
W四部分Q?/p>
q一部分主要说如何上传一个Internet上的资源到服务器?
首先需要引?System.Net q个命名I间Q然后操作如下:
HttpWebRequest hwq = (HttpWebRequest)WebRequest.Create("http://localhost/pwtest/webform1.aspx");
HttpWebResponse hwr = (HttpWebResponse)hwq.GetResponse();
byte[] bytes = new byte[hwr.ContentLength];
Stream stream = hwr.GetResponseStream();
stream.Read(bytes,0,Convert.ToInt32(hwr.ContentLength));
//HttpContext.Current.Response.BinaryWrite(bytes);
HttpWebRequest 可以从Internet上读取文Ӟ因此可以很好的解册个问题?