代码之家  ›  专栏  ›  技术社区  ›  SilverLight

使用Javascript或jQuery的Asp.net多视图/检查ActiveViewIndex

  •  1
  • SilverLight  · 技术社区  · 14 年前

    为什么下面的警报总是显示空值?

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Keyup._Default" %>
    
    <!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="JQuery/jquery-1.4.1.js" type="text/javascript"></script>--%>
                <script type="text/javascript">
    
                    document.onkeyup = onkeyupOfDocument;
    
                    function onkeyupOfDocument(evt) {
                        //var MultiView = $("*[id$='TextBox1']"); 
                        var MultiView = document.getElementById("MultiView1");
                        alert(MultiView);
                    }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
                <asp:View ID="View1" runat="server">
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </asp:View>
                <asp:View ID="View2" runat="server">
                </asp:View>
            </asp:MultiView>
        </div>
        </form>
    </body>
    </html>
    

    解决空问题后,我如何检查 ActiveViewIndex 使用JavaScript还是jQuery?

    看来

    if(MultiView.ActiveViewIndex == 0)
    

    不是真的!!

    2 回复  |  直到 8 年前
        1
  •  2
  •   SilverLight    13 年前

    在我们的页面完全加载到浏览器之后;查看源代码,我们可以说是不可能更改的 (不检查) 只有javascrip或jquery的asp.net中常规多视图的ActiveViewIndex。 因为没有具有MultiView1 id的元素->只存在一个div。

    var activeViewIndex = <%=MultiView1.ActiveViewIndex %>;
    

    请参见下面的链接了解更多信息(最新帖子):
    MultiView Is A reach Element

    var MultiView = document.getElementById("<%=MultiView1.ClientID %>");
    

    如果你想的话 改变

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        protected void butSubmit_Click(object sender, EventArgs e)
        {
            MultiView1.ActiveViewIndex = int.Parse(HiddenField1.Value);
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Demo</title>
    
        <script language="javascript" type="text/ecmascript">
        function OnClientClick( ServerControID,IndexControlID, Index){
            var objDemo = document.getElementById(ServerControID);
            if(objDemo){
                document.getElementById(IndexControlID).value = Index;
                objDemo.click();                        
            }        
        }
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
                    <asp:View ID="View1" runat="server">
                        <span style="color: #ff0000; background-color: #33ccff"><strong>Hi, I am View 1</strong></span></asp:View>
                    <asp:View ID="View2" runat="server">
                        <strong><span style="color: background; background-color: #99ff00">Hi, I am View 2</span></strong></asp:View>
                </asp:MultiView></div>
            <asp:HiddenField ID="HiddenField1" runat="server" />
            <input id="btnShow1" type="button" value="Show View 1" onclick="OnClientClick('butSubmit','HiddenField1','0')" />
            <input id="btnShow2" type="button" value="Show View 2" onclick="OnClientClick('butSubmit','HiddenField1','1')" />
            <div style="display: none">
                <asp:Button ID="butSubmit" runat="server" OnClick="butSubmit_Click" Text="Submit" /></div>
        </form>
    </body>
    </html>
    

    下面是ie 9加载页面后上面代码的源代码:

    <!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 id="Head1"><title>
        Demo
    </title>
    
        <script language="javascript" type="text/ecmascript">
    
            function OnClientClick(ServerControID, IndexControlID, Index) {
                var objDemo = document.getElementById(ServerControID);
                if (objDemo) {
                    document.getElementById(IndexControlID).value = Index;
                    objDemo.click();
                }
            }
        </script>
    
    </head>
    <body>
        <form method="post" action="WebForm3.aspx" id="form1">
    <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUIODMxNDI3MTNkGAEFCk11bHRpVmlldzEPD2RmZJjYXp6H2AsOwVGwRlIRlk0x9agdyp/Kg++cmPNXKpTg" />
    </div>
    
    <div class="aspNetHidden">
    
        <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKrwZG1BAKQo8KrDX7rF3izcHDs+E9bwpx3GnVGoIZVi2Gpv0IOOu9xXNMo" />
    </div>
            <div>
    
                        <span style="color: #ff0000; background-color: #33ccff"><strong>Hi, I am View 1</strong></span></div>
            <input type="hidden" name="HiddenField1" id="HiddenField1" value="1" />
            <input id="btnShow1" type="button" value="Show View 1" onclick="OnClientClick('butSubmit','HiddenField1','0')" />
            <input id="btnShow2" type="button" value="Show View 2" onclick="OnClientClick('butSubmit','HiddenField1','1')" />
        </form>
    </body>
    </html>
    
        2
  •  1
  •   Nathan    13 年前

    改变

    var MultiView = document.getElementById("MultiView1");
    

    var MultiView = document.getElementById("<%=MultiView1.ClientID %>");
    

    警报始终为空的原因是 客户端 叫做MultiView1:这就是 服务器端

    要获取客户端的活动视图索引,请使用以下命令:

    var activeViewIndex = <%=MultiView1.ActiveViewIndex %>;
    
    推荐文章