2

私はASP.NETアプリケーションに取り組んでおり、aspxページに3つのユーザーコントロールが埋め込まれており、マスターページを使用しています。

3つのうち2つのユーザーコントロールにはDataListがあります。ユーザーコントロールで特定の/選択された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>
4

2 に答える 2

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>");
    
    } 
    
  • マークアップからわかるように、リンクボタンがありました。そのため、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 について説明した投稿と、上記で投稿したメソッドに関するコード プロジェクトの記事に感謝します。急いでいるので、リンクを貼れません。この情報を最初に投稿した人に感謝します。

于 2011-07-25T13:00:51.780 に答える
0

最も簡単なトリックは、データリストにアンカーやボタンなどのフォーカス可能な html 要素がある場合、タブ インデックスをゼロに設定するか、js を使用してそれにフォーカスを置くことです。

于 2011-07-13T20:08:39.567 に答える