2010-07-21 3 views
1

Почему предупреждение ниже всегда показывает мне null?Asp.net MultiView/check ActiveViewIndex С Javascript или jQuery

<%@ 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

после нашей страницы полностью загружается в браузер & просмотра исходного кода, мы можем сказать, что это не возможно изменить (не проверял) ActiveViewIndex Регулярной MultiView В asp.net только JavaScrip или JQuery. , потому что там нет элемента с MultiView1 id -> просто div Existed.

мы можем только проверить ActiveViewIndex из MultiView1 Натан ответил на код ниже:

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

плз увидеть ссылку ниже для получения дополнительной информации (последнее сообщение):
MultiView Is A reach Element
поэтому ниже код имеет нет никакого смысла:

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

если вы хотите ПЕРЕМЕН (не проверить) т он ActiveViewIndex в стороне клиента есть трюк -> плз посмотреть на приведенных ниже кодов:

<%@ 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> 
+0

во время дать ответ на этот вопрос кто-то проголосовал меня из-за предыдущую запись/я редактировал свой ответ/плз голос я вверх/это несправедливо ... – MoonLight

+0

@LostLord: Не беспокойтесь о нисходящем, важная часть заключается в том, что вы получили свой ответ. Это, несомненно, сделает ответ более читаемым, чтобы исключить все части, которые вам не нужны, чтобы дать ответ. –

+0

дорогой @NickLarsen: я удалил принятие моего ответа до тех пор, пока не уверен, что мы не можем изменить ActiveViewIndex с ** Только JavaScript ** и без какой-либо помощи от кода на стороне сервера от верхнего ответа! я сомневаюсь в том, что Nathan comments.we нужно больше людей об этой проблеме. – MoonLight

1

изменить

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

в

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

Причина, по которой предупреждение всегда равно null, заключается в том, что на стороне нет элемента на стороне клиента, называемого MultiView1: это серверный сервер идентификатор элемента управления.

получить активный индекс вида на сторону клиента, используйте:

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

спасибо, что ответили на этот вопрос! всего лишь момент/я тестирую его – MoonLight

+0

вы ошибаетесь - я проверяю ваши коды следующим образом после добавления ScriptManager -> function pageLoad() { var MultiView = document.getElementById ("<% = MultiView1.ClientID%>") ; предупреждение (MultiView); } все еще возвращает null ... (мы используем ClientID из-за мастер-и контент-страниц, но здесь нет MultiView после рендеринга, просто div) plz дайте нам объяснение !!! – MoonLight

+0

Что такое document.getElementById ("<% = MultiView1.ClientID%>"); сделать как? – Nathan

 Смежные вопросы

  • Нет связанных вопросов^_^