2011-07-13 68 views
2

我正在处理ASP.NET应用程序,其中我有3个用户控件嵌入aspx页面,而aspx页面又使用母版页。滚动到用户控件中的特定DataList项目

2个用户控件中的3个都有一个DataList。我想滚动到usercontrol中的特定/选定的DataListItem。

另外,我看了这个帖子(http://forums.asp.net/t/1596201.aspx)。但我认为这不会对我有用。我在aspx页面中有MaintainScrollPositionOnPostback =“true” - 还没有运气。

这将是非常有益的,如果有人可以帮我找出一个办法做到这一点

的标记看起来像这样

 <asp:DataList ID="dl" runat="server" 
      SkinID="DataList" onitemcommand="dl_ItemCommand" 
      > 
      <ItemTemplate> 
       <asp:Label ID="lblIDTitle" runat="server" Text="ID: " /> 
       <asp:Label ID="dlLabel" runat="server" Text='<%# Eval("Id") %>' /> 
       <asp:LinkButton ID="btnSelect" runat="server" CommandName="Select">Select</asp:LinkButton> 
       <br /> 
       <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("DisplayName") %>' /> 
       <br /> 
      </ItemTemplate> 
     </asp:DataList> 
+0

我们需要知道您的标记看起来像 –

回答

2

看起来很简单。以下是具体步骤:

  • 在用户控件包含数据列表,添加了此方法..

    public void FocusControlOnPageLoad(string ClientID, System.Web.UI.Page page) 
    { 
        ClientScriptManager clientScript = this.Page.ClientScript; 
        clientScript.RegisterClientScriptBlock(this.GetType(),"CtrlFocus", 
    
            @"<script> 
    
          function ScrollView() 
    
          { 
          var el = document.getElementById('" + ClientID + @"') 
          if (el != null) 
          {   
           el.scrollIntoView(); 
           el.focus(); 
          } 
          } 
    
          window.onload = ScrollView; 
    
          </script>"); 
    
    } 
    
  • 你可以从加价我有一个LinkBut​​ton看到。所以在OnItemCommand中,只要点击链接按钮,我就调用了这个函数。像这样的东西;

    protected void dlCommitment_ItemCommand(object source, DataListCommandEventArgs e) 
    {    
        if (e.CommandName == "Select") 
        { 
         LinkButton link = LinkButton)dlCommitment.Items[e.Item.ItemIndex].FindControl("btnSelectCMTMT"); 
         FocusControlOnPageLoad(link.ClientID, this.Page); 
        } 
    } 
    

和它的工作就像一个魅力。感谢有关ScrollIntoView和我上面发布的方法的代码项目文章的讨论。由于我很忙,我无法附加链接。感谢那些原始发布此信息的人。

0

最简单的诀窍是,如果u有任何可获得焦点HTML元素像数据列表中的锚点或按钮,将选项卡索引设置为零,或使用js将焦点放在它上面。

+0

@hungryMind ..我很安静,不知道该怎么做。你能给我一个基于上述标记的例子吗? –

相关问题