<script type="text/javascript">
        function upload(id){
//var selectobj1 = document.getElementById(id);
var selectobj_div = document.getElementById(id+'_Div');
var selectobj_hidden=document.getElementById(id+'_Hidden');
var url='DSRload.aspx';
var objParentWindow = window;
var vReturnValue = showModalDialog(url,objParentWindow,"dialogWidth:300px;dialogHeight:100px;scroll=yes;help:no;status:yes;center:true");
//alert(vReturnValue);
if(vReturnValue!=''&&vReturnValue!='@'&&vReturnValue!=undefined){
var arrreturn=vReturnValue.split("@");
//alert(arrreturn[0]);
selectobj_hidden.value=arrreturn[0];//这个地方错了...因为获取不到//var //selectobj_hidden=document.getElementById(id+'_Hidden');的ID.在运行的时候这个ID会变成很长一串.
selectobj_div.innerHTML="<a target='_blank' href="+arrreturn[0]+">查看/下载附件</a>
   
  }
}
    </script>我的需求就是这样的.net里面.将客户端的值赋值给CS文件里面的一个变量.利用hidden来实现.<input id="LabelContractAtt_Hidden" type="hidden" runat="server"/>使用runat="server"这个将hidden变成服务器端的.现在一变成服务器端的就出现了拿不到ID了...不加这个runat="server"就可以.得到..现在我都不知道该怎么写了..

解决方案 »

  1.   

    1.查查:ClientID的用法
    2.查查母版對ID的影響
      

  2.   

    var selectobj_hidden=document.getElementById('<%=LabelContractAtt_Hidden.ClientID%>');
      

  3.   

    用CS代码堆出function upload(id){},里面取hidden的ClientID
      

  4.   

    用<input type="text">储存可以吧,加上style="display:none" 也可以隐藏起来。<input id="LabelContractAtt_Hidden" type="text" style="display:none" value="" runat="server"/>可以用js获取并赋值。var selectobj_hidden=document.getElementById(id+'_Hidden');
    selectobj_hidden.value=arrreturn[0];服务器端可以获得这个值。string str=LabelContractAtt_Hidden.Value;
      

  5.   

    用母版是会这样,直接写后面生成的ID就能拿到了,你先让他报个错,然后查看源码能看到那个隐藏控件的ID,那个ID就是最终的ID,根据那个ID能拿到值
      

  6.   

    考虑用
    <asp:HiddenField />来代替<input type='hidden' />
    还有可以注意一下 隐藏域是否包含在了GridView里
      

  7.   

    因为ID变了。
    右击->查看源文件->看看控件的ID变成什么样了,把它拷贝过来放入程序即可。
    还有一种就是:document.getElementById("<%=HiddenID.ClientID%>")     推荐
      

  8.   

    现在最麻烦的就是不管什么控件.只要加上了runat="server"就会将ID改变掉...现在我只要拿到这个ID就可以了...兄弟们帮我想想办法啊
      

  9.   

    document.getElementById(" <%=HiddenID.ClientID%>")
      

  10.   

    因为那个hiddenID是通过一个参数动态读取的.并不是写死在程序里面的.所以就是在<%= %>这个里面没办法将id传进去.
      

  11.   

    在服务器Page_Load
    //注删一个获取你的HiddenField的ID的JS代码
    StringBuilder script = new StringBuilder();
    script.Append(" function GetMyHiddenFieldID(){");
    script.Append("return '" + MyHiddenField.ClientID + "';");
    script.Append("}"); ScriptManager.RegisterClientScriptBlock(this, GetType(), "MyScript", script.ToString(), true);把你客户端的JS改成
    <script type="text/javascript">
            function upload(id){
            //var selectobj1 = document.getElementById(id);
            var selectobj_div = document.getElementById(id+'_Div');
            var selectobj_hidden=document.getElementById(GetMyHiddenFieldID());
            var url='DSRload.aspx';
            var objParentWindow = window;
            var vReturnValue = showModalDialog(url,objParentWindow,"dialogWidth:300px;dialogHeight:100px;scroll=yes;help:no;status:yes;center:true");
            //alert(vReturnValue);
            if(vReturnValue!=''&&vReturnValue!='@'&&vReturnValue!=undefined){
                var arrreturn=vReturnValue.split("@");
                //alert(arrreturn[0]);
                selectobj_hidden.value=arrreturn[0];//这个地方错了...因为获取不到//var //selectobj_hidden=document.getElementById(id+'_Hidden');的ID.在运行的时候这个ID会变成很长一串.
                selectobj_div.innerHTML="<a target='_blank' href="+arrreturn[0]+">查看/下载附件</a>
               
              }
            }
        </script>