积极答复者
如何让弹出窗口的“确认”和“取消”起作用?

问题
-
我用FormView做了一个用于显示、修改数据的界面,点击显示界面中的“编辑”,就跳转到编辑界面。
在编辑界面中我设置了一个图片上传的功能,这个功能主要是两个键,一个是FileUpLoad,另一个是Button。
点击Button就会将图片输入到数据库中去,我测试没有问题。
现在我需要优化一下这个Button:当点击Button时,要先判断在sql数据库中是否已存在图片,如果存在图片,就需要再次“确定”或“取消”来执行修改或放弃修改。
问题:我要如何设置这个功能呢?需要修改的代码如 图1 所示,完整代码附在最后!
请帮忙看看,3Q!
--------------------------------------图1-------------------------------------
----------------------------------代码1-----------------------------------
protected void CPUPhoto_Click(object sender, EventArgs e) { if (!((FileUpload)this.FormView1 .FindControl ("UploadCPUPhoto")).HasFile) { ((Label)this.FormView1 .FindControl ("lbMessage")) .Text = "请选择上传图片!"; return; } else { try { //获取上传文件路径 string filePath = ((FileUpload)this.FormView1.FindControl("UploadCPUPhoto")).PostedFile.FileName; //获取上传文件后缀 string fileExt = filePath.Substring(filePath.LastIndexOf(".") + 1); //限定上传格式 if (fileExt.ToLower() == "gif" || fileExt.ToLower() == "jpg" || fileExt.ToLower() == "bmp" || fileExt.ToLower() == "png") { if (((FileUpload)this.FormView1 .FindControl ("UploadCPUPhoto")).PostedFile.ContentLength > 5120000) { ((Label)this.FormView1 .FindControl ("lbMessage")).Text = "限定上传图片的大小不能超出5M!"; return; } else { //生成文件名 string newName = ((Label)this.FormView1.FindControl("CIDLabel")).Text; string fileName = newName + "." + fileExt; //源文件保存路径 string savePath = Server.MapPath("~/Pictures/ContractPic/"); //上传图片 ((FileUpload)this.FormView1 .FindControl ("UploadCPUPhoto")).PostedFile.SaveAs(savePath + fileName); ////文件类型 //开始运行数据库 string strconnNo = "Data Source=.;Initial Catalog=长铁物业公司资产数据库;Integrated Security=True"; SqlConnection cnNo = new SqlConnection(strconnNo); cnNo.Open(); string ContractUrlNo = "select ContractPictureUrl from ContractTable where CID='"+newName+"'"; SqlCommand cmNo = new SqlCommand(ContractUrlNo ,cnNo); SqlDataReader drNo=cmNo .ExecuteReader(); //判断sql数据库相应的数据是否为空,为空则执行if,非空则执行else if (drNo.Read() && drNo["ContractPictureUrl"] == System.DBNull.Value) { string strconn = "Data Source=.;Initial Catalog=长铁物业公司资产数据库;Integrated Security=True"; SqlConnection cn = new SqlConnection(strconn); cn.Open(); string ContractUrl = "update ContractTable set ContractPictureUrl ='" + fileName + "' where CID='" + newName + "'"; SqlCommand cm = new SqlCommand(ContractUrl, cn); SqlDataReader dr = cm.ExecuteReader(); cn.Close(); } else { //ClientScript.RegisterStartupScript(typeof(Page), "图片已存在", "alert('图片已存在');", true); //Response.Write("是"); //Response.Write("<script languge=javascript'>if(confirm('图片已存在,是否替换该图片?')){alert('替换完成')}else{alert('替换取消')}</script>"); //Response.Write("否"); ((Button)this.FormView1.FindControl("CPUPhoto")).Attributes.Add("onclick", "javascript:return window.confirm('确认更改吗?')"); } } } else { ((Label)this.FormView1 .FindControl ("lbMessage")).Text = "只允许上传gif,jpg,bmp,png格式的图片文件!"; return; } } catch (Exception ex) { throw new Exception(ex.Message, ex); } } }
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
答案
-
我個人只能給點建議,實際可能還要請你再試試。
我看你判斷是否有重複是依靠
string newName = ((Label)this.FormView1.FindControl("CIDLabel")).Text;
那麼當在Page_Load的時候如果已經有了newName的數值,先去資料庫看看有沒有這一筆資料,如果有(表示需要通知對方),那麼在加上你現在的那個:
((Button)this.FormView1.FindControl("CPUPhoto")).Attributes.Add("onclick", "javascript:return window.confirm('確認更改嗎?')");
如果沒有(表示不需要通知)就不用加了。
希望有幫到你。- 已建议为答案 Will ShaoMicrosoft employee, Moderator 2013年7月29日 7:58
- 已标记为答案 Will ShaoMicrosoft employee, Moderator 2013年8月1日 5:23