在javascript中处理asp.net的'runat =“server”'html对象

时间:2011-06-13 17:52:03

标签: javascript asp.net html

好吧,我知道您可以使用以下代码从asp.net控件获取信息:

var element = document.getElementById('<%=myControl.ClientID%>'); 

然而,我无法在Javascript中抓取它后操纵所述html元素。我需要做些什么才能更改javascript中设置为runat =“server”的内容的属性?

是否只能通过服务器端C#?

为了进一步说明,我有一个div通过Javascript改变大小,我试图获取它的innerhtml中存在的mschart来改变它的高度/宽度。但是,它在服务器上运行会导致问题。

<div id="div0" style="background-color:Silver; position: absolute; top: 0px; left: 0px; width: 480px; height: 245px;">
            <asp:Chart ID="chart0" runat="server"  Height="245px" Width="480px" 
                    BackColor="220, 230, 242" BackGradientStyle="None" 
                        BackSecondaryColor="220, 230, 242">
            <BorderSkin PageColor="220, 230, 242" />
            </asp:Chart>
        </div>

编辑:最后在使用查询字符串的回发中处理图表大小调整,然后在init中的javascript中抓取这些值并调整那里的div。

7 个答案:

答案 0 :(得分:4)

因为元素有runat=server,所以你只能修改后面代码(服务器端)的属性。可以通过javascript更改实际的客户端属性,例如可见性。

答案 1 :(得分:4)

有点不清楚你的意思。如果您的意思是,您想要操纵服务器端属性,或者调用服务器端功能,那么您无法通过javascript执行此操作。你需要使用类似ajax或webmethods的东西。如果您的意思是要修改它的客户端属性,比如它是否可见,或者它包含哪些数据,那么您可以这样做。但是,您需要指定有关您正在尝试做什么的更多信息。

编辑:

根据您的最新信息,有好消息和坏消息。是的,您可以在客户端更改控件的大小,但这只会拉伸图像。 MSChart生成下载的图像文件。拉伸会导致质量不佳。

如果不能选择拉伸,则需要为新尺寸重新生成图表。这将要求您使用某种类型的ajax,或者完全刷新页面。

答案 2 :(得分:3)

如果该控件转换为简单的HTML元素,您应该能够编辑“控件”的客户端属性。但是,有时服务器端属性没有客户端模拟。

需要注意的一件事是,如果控件未设置为可见,那么这意味着它根本不会在页面上呈现;如果是这种情况,则无法通过JavaScript访问它。

答案 3 :(得分:2)

如果您要修改的是对象的with和height,则没有理由不能使用以下内容:

var element = document.getElementById('<%=myControl.ClientID%>'); 
element.style.height = divHeight;

只需在生成的html中查看具有该名称的控件实际上是div或图像(或者您可以重新调整大小的内容),您可以在其中设置宽度和高度。我不知道Chart控件呈现的是什么。在任何情况下,使用Firebug检查页面中的html元素,并查看您在javascript中所做的更改如何影响结果。

无论如何,请记住,您只能在javascript中设置客户端属性这意味着您希望在某个div元素上设置它,而不是服务器端控件。知道服务器端控件确实呈现为html,你应该能够以某种方式实现你想要的东西。

答案 4 :(得分:2)

我的建议是使用jQuery编写脚本。它将使用的东西是客户端脚本代码中的以下内容:

  1. 获取所需高度的元素。
  2. 获取您想要操作的元素。
  3. 使用第1部分中的值更改元素高度。
  4. 如果您认为这是一种方法,那么我可以帮助您使用一些代码。

答案 5 :(得分:0)

我试图在包含runat="server"属性的jquery中操作一个控件。我无法改变它。我一删除runat="server",就注意到jquery发生了变化。

你可以自己测试一下:

<asp:Label ID="myLabel">hello, warlord!</asp:Label>
<asp:Label ID="myLabel2" runat="server">hello, warlord!</asp:Label>
<script type="text/javascript">$("#myLabel").css("border", "3px solid red");</script>
<script type="text/javascript">$("#myLabel2").css("border", "3px solid red");</script>

答案 6 :(得分:0)

我有同样的问题,这通常发生在你的html控件(使用runat =&#34; server&#34;)在contentPlaceHolder中。这就是我的所作所为:

我改变了:

document.getElementById("mypopup").style.visibility = "visible";

为:

document.getElementById("ctl00_ContentPlaceHolder1_mypopup").style.visibility = "visible";

当您在浏览器上查看页面源代码时,您将看到您的html控件确实具有的名称。

您可以找到有关如何正确使用ClientID属性here

的更多信息