日期:2014-05-19  浏览次数:20406 次

同一頁面加載兩個相同的自定義控件--求可行辦法?
我在同一個頁面上加載了兩個相同的自定義上傳控件,分別放在兩個div中,可是我單擊添加按鈕的時候,file老加在前面的div中.添加的代碼如下:
function   addFile()
        {
        var   str   =   ' <br/> <INPUT   type= "file "   size= "100px "   name= "File "> '
        document.getElementById( 'MyFile ').insertAdjacentHTML( "beforeEnd ",str)
        }
        </script>
我知道是當我單擊的時候老找到前面的Myfile,所以在前面加.
現在我想控制div的可訪問性,當我單擊後面的按鈕的時候不掃描前面div裡面的items
.有甚麼方法嗎?還有甚麼可行的方案.

------解决方案--------------------
页面上每一个元素(Element)的ID不应重复,你是怎样导致他们重复的?或者参阅INamingContainer接口。
------解决方案--------------------
两个控件 id不可能都是MyFile吧
可以把自定义控件里面的按钮事件改为
button1.Attribute.Add( "onclick ", "addFile( ' "+this.ClientID+ " ') ");

function addFile(fileid)
{
var str = ' <br/> <INPUT type= "file " size= "100px " name= "File "> '
document.getElementById(fileid).insertAdjacentHTML( "beforeEnd ",str)
}
------解决方案--------------------
id name tag
------解决方案--------------------
在用户控件的设计界面中代码修改为:
<script language= "JavaScript " type= "text/javascript ">
function addFile(containerID)
{
var str = ' <br/> <INPUT type= "file " size= "100px " name= "File "> '
document.getElementById(containerID).insertAdjacentHTML( "beforeEnd ",str)
}
</script>

<div id= "dvfile " runat= "server " style= "width:100% ">
<table id= "tb " runat= "server ">
<tr>
<td> <input type= "button " value= "添加 " runat= "server " id= "AddFile " /> &nbsp;如果需上傳附檔,請點擊添加按鈕. </td>
</tr>
<tr>
<td >
<p id= " <%=this.ID%> MyFile "> <input type= "file " size= "100px " name= "File "/> </p>
</td>
</tr>
</table>
</div>

在用户控件的绑定代码的修改Page_Load(object sender, EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
this.AddFile.Attributes.Add( "onclick ", "addFile( ' " + this.ID + "MyFile '); ");
}