现在需要实现如上效果,在gridview上单击某一行,实现选中或取消选中某一行,然后再通过页面上的功能按钮来对选中行作相应操作,如(删除)实现路如下:1、在服务器端程序中,RowDataBound事件中,对每一行数据进行JS脚本事件绑定        protected void GridViewUnread_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                boundScriptToCell(e);
            }
        }        private void boundScriptToCell(GridViewRowEventArgs e)
        {
            e.Row.Attributes.Add("id", e.Row.ClientID);
            e.Row.Attributes.Add("onclick", string.Format("AddOrRemove('{0}','{1}')", ((UserTask)e.Row.DataItem).TaskID, e.Row.ClientID));
        }2、用页面的JS程序来实现,选中或取消选中行,实现思路就是每单击一行时,将该行的数据值(主键)用字符串相加的方式,存放到页面某一隐藏r的服务端控件中,取消选中某一行时,反之从控件值中删除该行主键值(注意JS脚本位置须放在页面底部,要不然页面控件元素未加载完成,JS会报错)<script type="text/javascript">
 //向ForMove控件中添加数据,或者删除数据
  function AddOrRemove(ForMoveTaskID,rowid)
  {   var index = document.getElementById("<%=UnreadTaskID.ClientID%>").value.indexOf(ForMoveTaskID+"#");
   if(index == -1)
   {
    document.getElementById(rowid).style.backgroundColor = "#FFEBBB";
    document.getElementById("<%=UnreadTaskID.ClientID%>").value +=ForMoveTaskID+"#";
   }
   else
   {
                document.getElementById(rowid).style.backgroundColor = "";
    var temp = document.getElementById("<%=UnreadTaskID.ClientID%>").value;
    document.getElementById("<%=UnreadTaskID.ClientID%>").value = temp.replace(ForMoveTaskID+"#","");
   }
   ShowButton();
  }
  //根据选定内容决定是否显示提交按钮
  function ShowButton()
  {
   if(document.getElementById("<%=UnreadTaskID.ClientID%>").value == "")
    {
     document.getElementById("<%=DoMoveButton.ClientID%>").style.visibility="hidden";
    }
    else
    {
     document.getElementById("<%=DoMoveButton.ClientID%>").style.visibility="visible";
    }
  }
</script>3、功能按钮,实现操作,这个就跟普通按钮一样,写一个服务器端click事件,事件触发后,直接从存储选中值的那个服务端控件中取出值,然后再进行相应操作就行了。protected void DoMoveButton_Click(object sender, EventArgs e)
  {
   string[] TaskIDs = this.UnreadTaskID.Value.Split('#');  //操作去吧}