2011-04-17 79 views
0

嗨, 我有每頁顯示10條記錄一個gridview,現在我要實現SHIFT +點擊我的GridView,選項時,在第一行,然後按Shift鍵用戶點擊和點擊第5行,應選擇1和5之間的所有行(包括1和5)...換擋選記錄

任何人都可以建議我應該如何在JavaScript中做到這一點。

+0

不確定關於移位點擊,但您可以[使用複選框](http://www.codeproject.com/KB/aspnet/Extend_GridView.aspx)進行選擇。 – 2011-04-17 07:24:48

回答

0

我拿回來,我發現一個shift+click multiple select解決方案的GridView。所有的功勞歸功於mdv在asp論壇上。

var _sPreviousRow = null; 
function wsCheckRange(p_oGridView, p_oControl, e) { 
    var l_sCheckID = p_oControl.id; 
    var l_aCheckIDParts = l_sCheckID.split(p_oGridView.id); 
    var l_sCurrentRow = l_aCheckIDParts[1].split('_')[1].substring(3); 

    var l_oEvent = (window.event) ? event : e; 
    if (l_oEvent.shiftKey) { 
     if (_sPreviousRow != null && _sPreviousRow != l_sCurrentRow) { 
      var l_iFirst = 0, l_iLast = 0; 
      if (parseInt(_sPreviousRow,10) > parseInt(l_sCurrentRow,10)) { 
       l_iFirst = parseInt(l_sCurrentRow,10); 
       l_iLast = parseInt(_sPreviousRow,10); 
      } 
      else { 
       l_iFirst = parseInt(_sPreviousRow,10); 
       l_iLast = parseInt(l_sCurrentRow,10); 
      } 
      for (var i = l_iFirst; i < l_iLast; i++) { 
       var l_sLastRow = (i <= 9 ? '0' + i : i); 
       var l_sCtrlNew = l_sCheckID.replace('ctl' + l_sCurrentRow, 'ctl' + l_sLastRow); 
       var l_oCtrlNew = $get(l_sCtrlNew); 
       if (l_oCtrlNew) { 
        l_oCtrlNew.checked = p_oControl.checked; 
       } 
      } 
     } 
     _sPreviousRow = null; 
    } 
    else { 
     _sPreviousRow = l_sCurrentRow; 
    } 
} 
+0

我已經看過了,我可以有比這更簡單的解決方案。 – Abbas 2011-04-17 07:27:57

+0

@Abbas:「更簡單」?複製粘貼太複雜了?我想這會提示你對簡單的定義。 – 2011-04-17 07:30:21

+0

你能告訴我如何調用這個函數嗎?我的意思是checkBox單擊事件的參數。 – Abbas 2011-04-17 07:31:49