2012-07-27 56 views
1

我在jqueryui accordin点击加载占位符时遇到问题。我从后端填充。我需要根据accordin标头点击来填充占位符。如何在jqueryui accordin上填充占位符点击

这是我的HTML

<html> 
<head> 
    <script> 

    $(function() { 
     $('#login').button({ icons: { primary: "ui-icon-person"} }); 
     $('#showDataSource').button({ icons: { primary: "ui-icon-newwin"} }); 
     $('#logout').button({ icons: { primary: "ui-icon-locked"} }); 

     $('#login').click(function() { 

      var panel = $('#loginPanel').dialog({ modal: true }); 
      panel.parent().appendTo($("form:first")); 
     }); 

     $('#logout').click(function() { 
      (function (event) { 

      }); 
     }); 

     $('#showDataSource').click(function() { 
      $('#dataSource').dialog({ modal: true, width: 1000, height: 700 }); 
      $('.accordion').accordion({ autoHeight: false, navigation: true, collapsible: true, 
       active: false, 
       changestart: function (event, ui) { 
        var dataSourceID = ui.newHeader.find('a').attr('id'); 
        //var dataSourceColumn = EasyOutputWeb.Services.GetDataSourceColumns(dataSourceID, onsuccess, onError); 
        $.post(dataSourceID, function (data) { 

         //ui.newHeader.next("div").html(dataSourceID); 
         $('#columnPlaceHolder').html(dataSourceID); 
        }); 
       } 
      }); 
     }); 
    }); 

    function onsuccess(msg) { 
     alert(msg); 
    } 
    function onError(msg) { 
     alert(msg); 
    } 

    </script> 

</head> 

<body> 
     <div id="dataSource" runat="server"> 
       <div class="divtable"> 
        <div class="headrow" id="#accordianHeight"> 
         <div class="divcol"> 
          Data Sources</div> 
         <div class="divcol" > 
          Columns</div> 
         <div class="divcol"> 
          Strong Keys</div> 
        </div> 
        <div class="divrow"> 
         <div class="content"> 
          <div class="accordion" id="accordianHeight"> 
           <asp:PlaceHolder ID="dataPlaceHolder" runat="server" /> 
          </div> 
         </div> 
         <div class="content"> 
          <div id="dataColumn"> 
           test column 
           <asp:PlaceHolder ID="columnPlaceHolder" runat="server" /> 
          </div> 
         </div> 
         <div class="content" > 
          <div id="dataKey"> 
           Test key 
           <asp:PlaceHolder ID="keyPlaceHolder" runat="server" /> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 

</body> 
</html> 

回答

0

这里的第一个错误是,你使用PlaceHolder他们are not warp with any tag,因此jQuery的不能抓住他们。使用Panel,其中包含跨度或div的内容。

第二个错误是,当asp.net使他们每个人的最后的ID从.ClientID属性来获取,所以的jQuery的代码如下:

$('#<%=columnPlaceHolder.ClientID%>').html(dataSourceID); 

而且一个评论,如果您实际上并没有在你的Panel的代码后面添加任何控制,那么你简单地将一个<div id="columnPlaceHolder"></div>代码写在它们上面,并且像现在一样使用jQuery调用(不要添加CliendID)

+0

非常感谢,它的工作。但我的方法没有回应任何结果集。 – user1557020 2012-07-27 09:11:06

+0

非常感谢,它的工作。但我的方法没有回应任何结果集。这是我的方法var dataSourceColumn = EasyOutputWeb.Services.GetDataSourceColumns(dataSourceID,onsuccess,onError);我从asmx文件调用。 [的WebMethod(EnableSession =真)] [ScriptMethod] 公共字符串[] GetDataSourceColumns(串的DataSourceID) {//做一些操作和returing名称阵列,我可以能够通过使用警报 中看到结果的onSuccess(MSG)返回names.ToArray(); – user1557020 2012-07-27 09:17:43

+0

@ user1557020这是第二个问题。真的不明白这个问题是什么。 – Aristos 2012-07-27 09:22:07