Gridview 的多选问题 我现在看大家实现的多选,都是用一个 checkbox 来记录的,而且基本是自己编写代码实现的。请问,类似 Gridview 的"选择"可以选择一行(成为当前行),Gridview 有没有选择多行的功能?比方说,按住 Ctrl 键点击哪几个行,这几行就被多选了。被选择的行(s)可以被一次性删除。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的实现方法是添加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的. Gridview 的一切行为当然最终都是用 javscript 来实现的.我是说,要让 Gridview 代劳,不用我们自己写 javascript 脚本,来实现这个功能。一切脚本都是 Gridview 自动产生的。我们只关注后台 ASP.NET 的程序。 楼主的要求貌似无法实现,WinForm的就可以 用js + CheckBox模板列. 另外我没有听说过能用Ctrl多选的做法. “选择”只是一个功能原型。你可以自己在ViewState中记录已经选择过得行的行号,然后在绑定行的事件中给这些行设置不同的style,相信这只需要不到10行实际代码就可以完美达到。不过,这跟使用CheckBox相比,并不更加直观。 如果实现你说的功能,需要做的额外工作还是比较多的。(1)能识别Ctrl键的也只有Javascript了,因此你要用javascript判断选择时是否按住了Ctrl键。(2)GridView的选择按钮是后台执行的,你用他的话直接到后台了,无法判断前台是否按了Ctrl键,这样你必须使用模板列,加按钮或html的按钮做选择按钮,以在前台确定选择。方法倒不难,可以考虑将按钮id设置为行号(后边就不用说了吧,在OnClientClick或onclick中实现)。(3)GridView默认只能选中一项的,所以选中多项时你只能自己记录选中了哪些项。(4)既然选中项是自己记录的,还需要自己更改选中行的显示样式。呵呵,需要比较高的javascript功力和前后台数据交换能力。 非常感谢! 后面几位是真的看懂我的意思了。我将自己根据这些朋友的思路摸索一下,有成果我会及时暴露给大家。我想做一个比较完善的 Gridview 的编辑器,希望大家告诉我合适的资料,有什么想法也给我建议一下。我的比较完善的代码都在我的"代码实验室"里与大家共享:http://lab.why100000.com 按一行触发这一行的一个按钮,举一个简单的例子,假设一行中的一个模板列中有一个按钮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 android与ASP.NET程序交换数据问题 在aspx.cs后台 怎么获取前台 下拉框里面的值 .net项目架构 散分100....如何取gridview某单元格的值 SQL 取一个字段的前100个字 问一个Http请求的问题 asp.net里用C#如何做出一个树形目录? 我想做的功能是调查系统,一个页面里面要列出很多题目,每个题目下面要列出很多答案?? 各位专家请问怎么会未定义? (在线等) 高手求助 不用ajax.dll,请问这样算不算使用了ajax? 工具箱中的html不见了
<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函数)
我是说,要让 Gridview 代劳,不用我们自己写 javascript 脚本,来实现这个功能。一切脚本都是 Gridview 自动产生的。我们只关注后台 ASP.NET 的程序。
另外我没有听说过能用Ctrl多选的做法.
(1)能识别Ctrl键的也只有Javascript了,因此你要用javascript判断选择时是否按住了Ctrl键。
(2)GridView的选择按钮是后台执行的,你用他的话直接到后台了,无法判断前台是否按了Ctrl键,这样你必须使用模板列,加按钮或html的按钮做选择按钮,以在前台确定选择。方法倒不难,可以考虑将按钮id设置为行号(后边就不用说了吧,在OnClientClick或onclick中实现)。
(3)GridView默认只能选中一项的,所以选中多项时你只能自己记录选中了哪些项。
(4)既然选中项是自己记录的,还需要自己更改选中行的显示样式。呵呵,需要比较高的javascript功力和前后台数据交换能力。
我将自己根据这些朋友的思路摸索一下,有成果我会及时暴露给大家。
我想做一个比较完善的 Gridview 的编辑器,希望大家告诉我合适的资料,有什么想法也给我建议一下。我的比较完善的代码都在我的"代码实验室"里与大家共享:http://lab.why100000.com
if(e.RowType == DataControlRowType.DataRow)
{
Button bt=(Button)e.Row.FindControl("theButton");
e.Row.Attributes["onclick"]=bt.ClientClient+".click();";
}这样,点击这一行等于点击了这个按钮。对于专业的控件开发来讲,应该是使用 GetPostBackEventReference 来产生脚本。这里使用".....click();"来曲折地产生类似的功能。