当前位置:编程学习 > C#/ASP.NET >>

如何获取对话框问题

我要上传几个WORD,当某个文档已经存在的时候就弹出对话框,问是否覆盖,如果点确定则覆盖这个文档并继续上传后面的,否则跳过这个文档继续上传后面的文档。这个对话框值怎么获取呢?
我通过一个TEXTBOX来写,想获取对话框的返回值,但怎么TEXTBOX1 都得不到返回值
我这么写的:
 Response.Write("<script   type='text/javascript'> var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').text=result;</" + "script>");
是不是在 Response.Write()里, document.getElementById()用不了吗? --------------------编程问答-------------------- document.getElementById('textbox1').text改成document.getElementById('textbox1').value --------------------编程问答-------------------- 原因可能是:这段脚本执行的时候textbox1还没加载,所以获取对象无效。
放到onload事件中,或者写到html,body后面的位置执行如:
Response.Write("<script type='text/javascript'>document.onload=function(){var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').text=result;}</" + "script>");
--------------------编程问答--------------------
引用 1 楼 criedshy 的回复:
document.getElementById('textbox1').text改成document.getElementById('textbox1').value
是的,text也需要改成value属性。 --------------------编程问答-------------------- 一定要value吗?
<asp:TextBox Visible ="true" ID ="textbox1" runat ="Server" ></asp:TextBox>TEXTBOX里都没有VALUE 属性阿? --------------------编程问答--------------------
引用 4 楼 stone_ling 的回复:
一定要value吗?
<asp:TextBox Visible ="true" ID ="textbox1" runat ="Server" ></asp:TextBox>TEXTBOX里都没有VALUE 属性阿?


你还没有分清楚哪些代码在服务端执行,哪些代码在客户端(浏览器)执行

<asp:TextBox>是.NET解析 -- 服务器上
<input>是浏览器解析 -- 客户端上

两个不同的概念。 --------------------编程问答-------------------- 一定要value 

TextBox转化成html就是 input type=text 其值是value --------------------编程问答-------------------- 谢谢各位 ,但是我改了后仍然返回值无法传给TEXTBX1,报错,textbox1.Value里面的值是空的
 Response.Write("<script   type='text/javascript'> var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').Value=result;</" + "script>");
                    

                     if (bool.Parse(textbox1.Value ))  --------该字符串未被识别为有效的布尔值
                      {
                          AddPanelControls1(strFilename);
                      } --------------------编程问答--------------------
if (bool.Parse(textbox1.Text)) --------该字符串未被识别为有效的布尔值
  {
  AddPanelControls1(strFilename);
  }

//这里要用Text,因为这是服务端,在客户端才是value --------------------编程问答-------------------- Value -> value大小写敏感

楼主你该学点javascript了,这东西做WEB开发逃不了的。 --------------------编程问答-------------------- 即使改为这样的,TEXTBOX依然没法得到值,还有别的原因吧,是不是在Response.Write()里还有什么不同
 Response.Write("<script type='text/javascript'> var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').value=result;</" + "script>");
                    

                    if (bool.Parse(textbox1.Text ))
                      {
                          AddPanelControls1(strFilename);
                      }
<asp:TextBox ID ="textbox1" runat ="server"></asp:TextBox>
在运行时就不出现对话框了,直接出现以上错误了 --------------------编程问答-------------------- Response.Write("<script type='text/javascript'> var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').value=result;</" + "script>");

写在哪里的? --------------------编程问答-------------------- 我水平差,呵呵,大家见谅啊,我把程序帖出来
  if (!Redatabase.Read()) //////读数据库,看文档是否存在了,不存在上传,存在了就是我刚才那段,对话框,是否覆盖
                  {


                      
                    string path = Server.MapPath(".") + "\\文档\\" + strurl + "\\" + strFilename;
                    string inputPath = "文档\\" + strurl + "\\" + strFilename;
                      
                      hpf.SaveAs(path);
                      //   hpf.SaveAs(Server.MapPath(".")+"\\"+strFilename);  
                      //在Panel控件中显示上传过程
                      AddPanelControls(strFilename);


                      //////////////////////////////////////   把文件名存入detail数据库
                      OleDbConnection insert = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=E:\\文档管理系统\\database.mdb");
                      OleDbCommand cminsert;
                      string strinsert = "Insert into detail (name,parentid,link) values (@getName,@getparentid,@link)";
                      cminsert = new OleDbCommand(strinsert, insert);
                      cminsert.Parameters.Add("@getName", strFilename);
                      cminsert.Parameters.Add("@getparentid", getID);
                      cminsert.Parameters.Add("@link", inputPath);
                      insert.Open();
                      cminsert.ExecuteNonQuery();
                      insert.Close();

                      /////////////////////////////////////////

                  }
                      
                  else
                  {

                      

                    Response.Write("<script type='text/javascript'> var result=window.confirm('" + strFilename + "已经存在是否覆盖?'); document.getElementById('textbox1').value=result;</" + "script>");
                    

                    if (bool.Parse(textbox1.Text ))
                      {
                          AddPanelControls1(strFilename);
                      }
                  }
                  Redatabase.Close();
                  condatabase.Close(); --------------------编程问答--------------------

        
--------------------编程问答--------------------

            你这样写是弹不出来的
        
--------------------编程问答--------------------

            asp.net web不同于winform,可以随心所欲的弹对话框

confirm是客户端的 --------------------编程问答-------------------- confirm   是用于客户端脚本的,不可能对服务器端程序的流程产生影响。 --------------------编程问答-------------------- 那我应该怎么做才能满足我的需求呢? --------------------编程问答-------------------- 观望ing --------------------编程问答-------------------- text也需要改成value属性。 --------------------编程问答--------------------
引用 17 楼 stone_ling 的回复:
那我应该怎么做才能满足我的需求呢?


换一个思路去做 --------------------编程问答-------------------- 在想,就想做成WINDOUWS一样,在复制的时候有重名的提示是否覆盖,不知大家有什么好思路没?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,