none
JS改变一个服务器控件的大小值,然后在后台获取改变后的值,应该如何做? RRS feed

  • 问题

  • JS改变一个服务器控件的大小值,然后在后台获取改变后的值,应该如何做?

    该服务器控件放置在一个UpdatePanel中。  

    我在后台获取到的值只是未更改前的大小值,我想要在后台获取更改后的,应该如何获取。

    求解!!!

    2011年12月11日 10:34

答案

  • 例如panel的大小也由js控制进行相应的改变,而在后台需要获取的是这个panel改变后的大小;


    模拟您举的例子,用jQuery做的到

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="B.aspx.cs" Inherits="B" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="js/jquery-1.4.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            function changePanelWidth() {
    
                $("#<%= panel.ClientID %>").css({ "width": "100px" });
                $("#<%= hf.ClientID %>").attr("value","100");
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        
        <asp:Panel ID="panel" runat="server" Width="20" style="overflow:hidden;">
        Hello World!!
        </asp:Panel>
        
        <input type="button" value="changePanelWidth" onclick="changePanelWidth();" />
        <asp:HiddenField runat="server" ID="hf" Value="20" />
        <asp:Button Text="ShowResult" ID="btn"   runat="server" onclick="btn_Click" />
        </form>
    </body>
    
    </html>
    
    

     

        protected void btn_Click(object sender, EventArgs e)
        {
            Response.Write("Panel Width:"+hf.Value);
            //Change Server Control Width of panel
            panel.Width = Convert.ToInt32(hf.Value);
    
        }
    

     

     


    Shadowと愉快なコード達
    2011年12月12日 3:45

全部回复

  • 先在画面上放个HiddenField控件

    JS改变大小值后,把值存放在该HiddenField

    后台获取大小值都统一从该HiddenField的Value获取


    Shadowと愉快なコード達
    2011年12月11日 13:17
  • 已经测试了,但是获取的HiddenField的Value的值还是以前的,并未实现,因为其未提交

     

    注意:需要实现的是假设页面大小更改了,那么服务器控件,例如panel的大小也由js控制进行相应的改变,而在后台需要获取的是这个panel改变后的大小;

    2011年12月12日 3:14
  • 例如panel的大小也由js控制进行相应的改变,而在后台需要获取的是这个panel改变后的大小;


    模拟您举的例子,用jQuery做的到

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="B.aspx.cs" Inherits="B" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="js/jquery-1.4.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            function changePanelWidth() {
    
                $("#<%= panel.ClientID %>").css({ "width": "100px" });
                $("#<%= hf.ClientID %>").attr("value","100");
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        
        <asp:Panel ID="panel" runat="server" Width="20" style="overflow:hidden;">
        Hello World!!
        </asp:Panel>
        
        <input type="button" value="changePanelWidth" onclick="changePanelWidth();" />
        <asp:HiddenField runat="server" ID="hf" Value="20" />
        <asp:Button Text="ShowResult" ID="btn"   runat="server" onclick="btn_Click" />
        </form>
    </body>
    
    </html>
    
    

     

        protected void btn_Click(object sender, EventArgs e)
        {
            Response.Write("Panel Width:"+hf.Value);
            //Change Server Control Width of panel
            panel.Width = Convert.ToInt32(hf.Value);
    
        }
    

     

     


    Shadowと愉快なコード達
    2011年12月12日 3:45