好吧,我知道您可以使用以下代码从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。
答案 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编写脚本。它将使用的东西是客户端脚本代码中的以下内容:
如果您认为这是一种方法,那么我可以帮助您使用一些代码。
答案 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
的更多信息