gridview中使用方向键标记选中行

在aspx中定义javascript事件,判断按键是否为上下键;
<script type="text/javascript">
        var currentRowId = 0;   
        function SelectRow()
        {
            if (event.keyCode == 40)
                MarkRow(currentRowId+1);
            else if (event.keyCode == 38)
                MarkRow(currentRowId-1);
        }       

        function MarkRow(rowId)
        {
            if (document.getElementById(rowId) == null)
                return;           

            if (document.getElementById(currentRowId) != null )
                document.getElementById(currentRowId).style.backgroundColor = '#ffffff';

            currentRowId = rowId;
            document.getElementById(rowId).style.backgroundColor = '#ff0000';
        }  
    </script>
 然后在gridview的rowDataBound中, 添加处理按键的事件处理函数和使用鼠标点击某行时的选中事件.
 
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("id", _i.ToString());
            e.Row.Attributes.Add("onKeyDown", "SelectRow();");
            e.Row.Attributes.Add("onClick", "MarkRow(" + _i.ToString() + ");");

            _i++;
        }
    }  
 当点某行时,直接选中,然后移动方向键则切换不同的选中行; 如果直接按方向键,则从第一行开始标识.

测试页面下载:     /Files/margiex/TestCustGridView.rar
   
原文出处:
http://fredrik.nsquared2.com/viewpost.aspx?PostID=403

posted @ 2007-04-24 22:16  margiex  阅读(1507)  评论(5编辑  收藏  举报