国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
GridView點擊行按鈕的時候固定滾動條的實現(xiàn)方法
分類: ASP.NET C# 2014-10-16 22:58 416人閱讀 評論(0) 收藏 舉報
GridView顯示的內(nèi)容行數(shù)比較多需要垂直方向滾動條,但是遇到這樣一個問題,如果我們把滾動條拖到最下面,此時點擊GridView行按鈕事件,不論是刷新頁面其它控件還是彈出一個alert,都會導致GridView的滾動條自動回到第一行狀態(tài),用戶之前滑動到的位置丟失了,用戶需要再次將滾動條拖到上次的位置,操作麻煩,影響用戶體驗.

解決方案:用js記錄滾動條坐標,實現(xiàn)錨定效果

  1. <script type="text/javascript" language="javascript">  
  2.     function RecordPostion(obj) {  
  3.         var diva = obj;  
  4.         var sx = document.getElementById('<%=dvscrollX.ClientID %>');  
  5.         var sy = document.getElementById('<%=dvscrollY.ClientID %>');  
  6.         sy.value = diva.scrollTop;  
  7.         sx.value = diva.scrollLeft;  
  8.     }  
  9.   
  10.     function GetResultFromServer() {  
  11.         var sx = document.getElementById('<%=dvscrollX.ClientID %>');  
  12.         var sy = document.getElementById('<%=dvscrollY.ClientID %>');  
  13.         //為什么div1就不用ClientID,其它服務器控件就要用?  
  14.         document.getElementById('div1').scrollTop = sy.value;  
  15.         document.getElementById('div1').scrollLeft = sx.value;  
  16.     }  
  17. </script>  

在頁面上添加兩個HiddenField,分別記錄X軸和Y軸滾動條坐標,這里有一個小細節(jié),因為我的頁面使用了UpdatePanel,所以在獲取HiddenField控件ID的時候,應該用這種寫法<%=dvscrollX.ClientID %>,如果不用UpdatePanel的話就直接寫dvscrollX即可,對于div而言不管用不用UpdatePanel,都可以直接寫成div1

  1. <asp:HiddenField ID="dvscrollX" runat="server" />  
  2. <asp:HiddenField ID="dvscrollY" runat="server" />  

GridView控件外側的div標記增加js代碼 onscroll="javascript:RecordPostion(this);"

  1. <div id="div1" style="overflow: auto; line-height: 100%; letter-spacing: 1pt; height: 150px; margin:5px" onscroll="javascript:RecordPostion(this);">  
  2.     <asp:GridView ID="GridView1" runat="server" Width="98%" AutoGenerateColumns="False" CssClass="gv" DataKeyNames="管線ID" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">  
  3.          <Columns>                               
  4.               <asp:BoundField DataField="管線ID" HeaderText="管線ID" ReadOnly="true">  
  5.                    <FooterStyle CssClass="hidden" />  
  6.                    <HeaderStyle CssClass="hidden" />  
  7.                    <ItemStyle HorizontalAlign="Center" CssClass="hidden" />  
  8.               </asp:BoundField>  
  9.               <asp:TemplateField HeaderText="主項號">  
  10.                    <EditItemTemplate>  
  11.                         <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("主項號") %>'></asp:TextBox></EditItemTemplate>  
  12.                    <ItemTemplate>  
  13.                         <asp:Label ID="Label2" runat="server" Text='<%# Bind("主項號") %>'></asp:Label></ItemTemplate>  
  14.                    <ItemStyle HorizontalAlign="Center" Width="120px" />  
  15.                </asp:TemplateField>  
  16.                <asp:TemplateField HeaderText="明細">  
  17.                    <ItemTemplate>  
  18.                         <p class="cai">  
  19.                              <asp:LinkButton ID="lbDetails" runat="server" CommandArgument='<%# Eval("管線ID") %>' CommandName="Details" CausesValidation="False"  Text="明細" />  
  20.                         </p>  
  21.                    </ItemTemplate>  
  22.                    <HeaderStyle HorizontalAlign="Center" />  
  23.                    <ItemStyle HorizontalAlign="Center" Width="50px"/>  
  24.                </asp:TemplateField>  
  25.          </Columns>  
  26.          <RowStyle CssClass="gv_row" />  
  27.          <AlternatingRowStyle CssClass="gv_alternet_row" />  
  28.          <SelectedRowStyle CssClass="gv_selected_row" />  
  29.          <HeaderStyle CssClass="gv_header" />  
  30.      </asp:GridView>  
  31. </div>  

后臺代碼

  1. protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)  
  2.         {  
  3.             string pipelineId = e.CommandArgument.ToString();  //獲取管線id  
  4.   
  5.             if (e.CommandName == "Details")    //查看明細  
  6.             {  
  7.                 //做相應的操作...   
  8.   
  9.                 //加載js代碼,調(diào)用GetResultFromServer()方法  
  10.                 string sjs = "GetResultFromServer();";   
  11.                 ScriptManager.RegisterClientScriptBlock(this.GridView1, this.GetType(), "", sjs, true);  
  12.   
  13.             }  
  14.         }  


最后說明:問題解決思路來自 http://bbs.csdn.net/topics/330148083

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ListView經(jīng)典使用技巧
GridView編輯刪除操作
ECO TAB
原創(chuàng)分享!SharePoint母版頁修改(實戰(zhàn))
javascript-多選擇下拉列表中的jQuery
在gridview中把行中多余的字符用省略號代替(C#)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服