Gridview 的多选问题
我现在看大家实现的多选,都是用一个   checkbox   来记录的,而且基本是自己编写代码实现的。请问,类似   Gridview   的 "选择 "可以选择一行(成为当前行),Gridview   有没有选择多行的功能?比方说,按住   Ctrl   键点击哪几个行,这几行就被多选了。被选择的行(s)可以被一次性删除。
------解决方案--------------------我的实现方法是添加CheckBox的模板列   
   <asp:TemplateField ShowHeader= "False " HeaderText= "选择 ">  
                  <ItemStyle Width= "6px " Wrap= "False " />  
                  <HeaderTemplate>  
                      <asp:CheckBox ID= "CheckBox1 " runat= "server ">  </asp:CheckBox>  
                  </HeaderTemplate>  
                  <ItemTemplate>  
                      <asp:CheckBox ID= "CheckBox1 " runat= "server ">  </asp:CheckBox>  
                  </ItemTemplate>  
                      <HeaderStyle Width= "6px " />  
                  </asp:TemplateField>    
 HeaderTemplate的CheckBox用来全选(绑定一个客户端js函数)
------解决方案--------------------用模板列可以实现
------解决方案--------------------CheckBox的模板列 + javascript可以实现
------解决方案--------------------你的问题当然可以实现,但还是离不开JAVASCRIPT的.
------解决方案--------------------楼主的要求貌似无法实现,WinForm的就可以
------解决方案--------------------用JS啊。。
------解决方案--------------------用js + CheckBox模板列. 
   另外我没有听说过能用Ctrl多选的做法. 
------解决方案--------------------“选择”只是一个功能原型。你可以自己在ViewState中记录已经选择过得行的行号,然后在绑定行的事件中给这些行设置不同的style,相信这只需要不到10行实际代码就可以完美达到。   
 不过,这跟使用CheckBox相比,并不更加直观。
------解决方案--------------------如果实现你说的功能,需要做的额外工作还是比较多的。 
 (1)能识别Ctrl键的也只有Javascript了,因此你要用javascript判断选择时是否按住了Ctrl键。 
 (2)GridView的选择按钮是后台执行的,你用他的话直接到后台了,无法判断前台是否按了Ctrl键,这样你必须使用模板列,加按钮或html的按钮做选择按钮,以在前台确定选择。方法倒不难,可以考虑将按钮id设置为行号(后边就不用说了吧,在OnClientClick或onclick中实现)。 
 (3)GridView默认只能选中一项的,所以选中多项时你只能自己记录选中了哪些项。 
 (4)既然选中项是自己记录的,还需要自己更改选中行的显示样式。   
 呵呵,需要比较高的javascript功力和前后台数据交换能力。
------解决方案--------------------我啰嗦半天,还是sp1234(跟老婆共用一个局域网) 的方法简单,记录选择历史就行了,强! 
 给他补充一点,可能需要用个按钮,点击后表示开始多选了,再点(或者另一按钮)表示多选过程结束,操作起来不是很舒服。
------解决方案--------------------按一行触发这一行的一个按钮,举一个简单的例子,假设一行中的一个模板列中有一个按钮theButton,在 RowDataBound 事件处理中,写:     
   if(e.RowType == DataControlRowType.DataRow) 
   { 
       Button bt=(Button)e.Row.FindControl( "theButton "); 
       e.Row.Attributes[ "onclick "]=bt.ClientClient+ ".click(); "; 
   }   
 这样,点击这一行等于点击了这个按钮。   
 对于专业的控件开发来讲,应该是使用 GetPostBackEventReference 来产生脚本。这里使用 ".....click(); "来曲折地产生类似的功能。
------解决方案--------------------bt.ClientClient   -->   bt.ClientID   
                   或者  "document.GetElementByID( ' "+bt.ClientID+ " '). "
------解决方案--------------------http://dotnet.aspx.cc/article/a8efc285-f0b1-4f8f-8e73-2b7d8724a47c/read.aspx
------解决方案--------------------http://blog.csdn.net/selfxd/archive/2007/04/23/1576528.aspx