当前位置: 代码迷 >> ASP.NET >> 同一頁面加載兩個相同的自定義控件-求可行辦法?解决方法
  详细解决方案

同一頁面加載兩個相同的自定義控件-求可行辦法?解决方法

热度:4484   发布时间:2013-02-26 00:00:00.0
同一頁面加載兩個相同的自定義控件--求可行辦法?
我在同一個頁面上加載了兩個相同的自定義上傳控件,分別放在兩個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 '); ");
}
  相关解决方案