后台代码中有一按钮事件,意思是"新增上传文件"
点击后生成一个htmlinputfile控件
但由于在htmlinputfile控件无法控制右边按钮的样子
所以我又用了一下text和button类型控件来模拟htmlinputfile控件private void AddHtmlInputFile()
{
TableRow tr=new TableRow(); 
TableCell tc1=new TableCell(); 
HtmlInputFile uf=new HtmlInputFile(); 
uf.ID="uf"+Convert.ToInt16(Table1.Rows.Count);
//uf.Attributes.Add("style","display:none");
tc1.Controls.Add(uf);
HtmlInputText txtName = new HtmlInputText();
txtName.ID = "txtName"+ Convert.ToInt16(Table1.Rows.Count);
tc1.Controls.Add(txtName);
HtmlInputButton btnName = new HtmlInputButton();
btnName.ID = "btnName"+ Convert.ToInt16(Table1.Rows.Count);
btnName.Value = "浏览...";
btnName.Attributes.Add("style","color:White;background-color:#5AA8FF;border-color:Gray;");
tc1.Controls.Add(btnName);
tr.Cells.Add(tc1);
Table1.Rows.Add(tr);
btnName.Attributes.Add("onclick","test('"+uf.ID+"','"+txtName.ID+"')"); //test函数是写在前台的,具体代码见下

}<script language="javascript">
<!--

function test(fid,nid)
{ var but1=document.getElementById(fid);
                  var but2=document.getElementById(nid);
                  but1.click();
                  but2.value = but1.value;
                }
               -->
</script>
::::::::::::::::::::::::::::::::::::::::::::问题::::::::::::::::::::::::::::::::::::::::::  点击那个button(如果是HtmlInputFile右边的按钮的话就是一切正常)类型的控件后,谈出选择文件框(应该
是触发了HtmlInputFile的点击事件),然后选中文件后,然后再一次点击"增加上传"按钮,就有脚本错误,提示
"拒绝访问"   错误的源文件如下:<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();    (这里出错)
}
// -->
</script>:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

解决方案 »

  1.   

    这个方法行不通的.
    据我所知,论坛里很多人都试过(包括我自己),也有很多人问过(我已经回答过不少了).
    这种方式看似没有问题,点击按钮,事件触发上传框的点击,弹出选择框,在选择之后,触发ONCHANGE事件,将值写到文本框里面,一切显示非常吻合,完美无缺!
    但可惜的是,因为未知的限制,以这种方式达到的选择文件,却是无效的!
      

  2.   

    我记得在论坛里面有人专门提过这个问题,里面的解释较详细.但我找不到了.而且后来他好像采取了iframe的方式解决了.
      

  3.   

    我记得在论坛里面有人专门提过这个问题,里面的解释较详细.但我找不到了.而且后来他好像采取了iframe的方式解决了.
      

  4.   

    用iframe解决?能提供一下大概思路吗?
      

  5.   

    你把一个做好的HTMLINputFile放进Panle,然后把Panle隐藏起来,按纽控制显示不行么?