如何在Gridview中增加一个全选复选框控件??

cookies10wen 2009-03-05 08:51:40
如题:如何在GridView底端就是分页显示的地方增加一个复选框控件。。。
...全文
1750 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoniqiu51 2011-06-22
  • 打赏
  • 举报
回复
呵呵,学习~
sun523364 2011-06-10
  • 打赏
  • 举报
回复
对于一楼的方法我试了,结果报错了,我是新手,请帮忙解决一下吧?谢谢了


说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS1061: “ASP.default_aspx”不包含“cb_Select_CheckedChanged”的定义,并且找不到可接受类型为“ASP.default_aspx”的第一个参数的扩展方法“cb_Select_CheckedChanged”(是否缺少 using 指令或程序集引用?)

源错误:



行 20: <asp:TemplateField>
行 21: <ItemTemplate>
行 22: <asp:CheckBox ID="cb_Select" runat="server" OnCheckedChanged="cb_Select_CheckedChanged" />
行 23:
行 24: </ItemTemplate>


源文件: d:\360data\重要数据\我的文档\Visual Studio 2010\WebSites\WebSite12\Default.aspx 行: 22

Bj_junxia 2010-11-06
  • 打赏
  • 举报
回复
good!
lw402365015 2010-02-16
  • 打赏
  • 举报
回复
学 习
lfzpf 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 heliangpk 的回复:]
在gridView中添加一个模板列.然后编辑该模板的ItemTemplate属性..拖入一人复选框..
要该模板的FooterTemplate中也拖入一个复选框(注意要设置gridview控件中的ShowFooter属性为true,不然不能显示)

接下来就是给页角的那个复选框增加客户端事件了
可以在源文件加入一个JS函数
function selectAll(control)
{
var ob=control;
xState=ob.checked;
elem=ob.for…
[/Quote]

lihoumin 2009-03-08
  • 打赏
  • 举报
回复
首先要编辑Gridview的列,添加一个模板列,在每行的前面添加一个checkbox控件,实现单行的单选,在这个列的头部再加一个checkbox进行全选。
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="Selected" runat="server" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="AllSelected" runat="server" oncheckedchanged="AllSelected_CheckedChanged" AutoPostBack="True" />
</HeaderTemplate>
</asp:TemplateField>
对应的AllSelected_CheckedChanged方法
//全选当前页信息
protected void AllSelected_CheckedChanged(object sender, EventArgs e)
{
CheckBox allSelected = (CheckBox)sender;

if (allSelected.Checked)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox selected = (CheckBox)GridView1.Rows[i].FindControl("Selected");

selected.Checked = true;
}
}
else
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox selected = (CheckBox)GridView1.Rows[i].FindControl("Selected");

selected.Checked = false;
}
}
}
liefdiy 2009-03-08
  • 打赏
  • 举报
回复
学习学习
yujinhuizz 2009-03-07
  • 打赏
  • 举报
回复
看看学习学习
冰岛男孩 2009-03-07
  • 打赏
  • 举报
回复
学习……
Jinglecat 2009-03-06
  • 打赏
  • 举报
回复
分页模板见:http://www.cnblogs.com/Jinglecat/archive/2008/12/19/424794.html
Jinglecat 2009-03-06
  • 打赏
  • 举报
回复
已测试代码 ->

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

#region sample data

static System.Data.DataTable CreateSampleProductData()
{
System.Data.DataTable tbl = new System.Data.DataTable("Products");

tbl.Columns.Add("ProductID", typeof(int));
tbl.Columns.Add("ProductName", typeof(string));
tbl.Columns.Add("UnitPrice", typeof(decimal));
tbl.Columns.Add("CategoryID", typeof(int));
tbl.Columns.Add("Stock", typeof(bool));

tbl.Rows.Add(1, "Chai", 18, 1);
tbl.Rows.Add(2, "Chang", 19, 1);
tbl.Rows.Add(3, "Aniseed Syrup", 10, 2);
tbl.Rows.Add(4, "Chef Anton's Cajun Seasoning", 22, 2);
tbl.Rows.Add(5, "Chef Anton's Gumbo Mix", 21.35, 2);
tbl.Rows.Add(47, "Zaanse koeken", 9.5, 3);
tbl.Rows.Add(48, "Chocolade", 12.75, 3);
tbl.Rows.Add(49, "Maxilaku", 20, 3);

return tbl;
}

#endregion

private void BindProducts()
{
grdvProducts.DataSource = CreateSampleProductData();
grdvProducts.DataBind();
}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindProducts();
}
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
http://topic.csdn.net/u/20090305/08/40c5f471-b71d-4114-b542-6fd19222d075.html
<br />
<asp:GridView ID="grdvProducts" runat="server" AutoGenerateColumns="False" PageSize="3"
AllowPaging="true" ShowFooter="true">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" ToolTip="Select All" onclick="chkAll_Click(this)" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server" ToolTip="Select All" onclick="chkItem_Click(this)" />
</ItemTemplate>
<FooterTemplate>
<asp:CheckBox ID="chkAll" runat="server" ToolTip="Select All" onclick="chkAll_Click(this)" />
</FooterTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProductID" HeaderText="Product ID" />
<asp:BoundField DataField="ProductName" HeaderText="Product Name" />
</Columns>
<PagerTemplate>
<asp:CheckBox ID="chkAll" runat="server" ToolTip="Select All" onclick="chkAll_Click(this)" />
<asp:LinkButton ID="btnPrev" runat="server" CommandName="Page" CommandArgument="Prev" >Prev</asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" CommandName="Page" CommandArgument="Next" >Next</asp:LinkButton>
</PagerTemplate>
</asp:GridView>

<script type="text/javascript">
function chkAll_Click(sender) {
var tbl = document.getElementById("grdvProducts");
var inputArray = tbl.getElementsByTagName("input");
for (var i = 0; i < inputArray.length; i++) {
if (inputArray[i].type == "checkbox" &&
(inputArray[i].id.lastIndexOf("chkItem") > 0 ||
inputArray[i].id.lastIndexOf("chkAll") > 0)) {
inputArray[i].checked = sender.checked;
}
}
}
function chkItem_Click(sender) {
var tbl = document.getElementById("grdvProducts");
var inputArray = tbl.getElementsByTagName("input");
var allChecked = false;
if (sender.checked) {
for (var i = 0, allChecked = true; i < inputArray.length; i++) {
if (inputArray[i].type == "checkbox" &&
inputArray[i].id.lastIndexOf("chkItem") > 0 &&
!inputArray[i].checked) {
allChecked = false;
break;
}
}
}
var i = -1;
while (++i < inputArray.length) {
if (inputArray[i].type == "checkbox" &&
inputArray[i].id.lastIndexOf("chkAll") > 0) {
inputArray[i].checked = allChecked;
}
}
}
</script>

</div>
</form>
</body>
</html>
cookies10wen 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
写程序不能短视,如果随便一个人放到页面上另外一个选择框你的程序就乱了,那么你写程序的风格就很“危险”,你的pm只有注意到那些程序员有这种“想当然地进行编程”的问题。
[/Quote]

我现在对整个项目都分析清楚了,所有功能架构都了解到,现在还没开始写程序,只是想看看在技术上有什么问题,遇到问题就来CSDN发个贴,呵呵,谢谢你的解答。。
ilovew521527 2009-03-05
  • 打赏
  • 举报
回复
呵呵
zzxap 2009-03-05
  • 打赏
  • 举报
回复
[code=HTML]
<asp:CheckBox ID="ch" runat="server" onclick="getCount(this);"/>


<asp:Button ID="chuse" runat="server" CssClass="Button" Text="反選" /> <asp:Button ID="ChoseAll" runat="server" CssClass="Button" Text="全选" OnClick="ChoseAll_Click" />


Protected Sub chuse_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles chuse.Click
'反選
For Each c As Control In Me.Repeater1.Controls
Dim check As CheckBox = DirectCast(c.FindControl("ch"), CheckBox)
If check IsNot Nothing Then
If check.Enabled = True Then
check.Checked = Not check.Checked
End If
End If
Next
End Sub
Protected Sub ChoseAll_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ChoseAll.Click
'全選
For Each c As Control In Me.Repeater1.Controls
Dim check As CheckBox = DirectCast(c.FindControl("ch"), CheckBox)
If check IsNot Nothing Then
check.Checked = True
End If
Next
End Sub

[/CODE]
heliangpk 2009-03-05
  • 打赏
  • 举报
回复
在gridView中添加一个模板列.然后编辑该模板的ItemTemplate属性..拖入一人复选框..
要该模板的FooterTemplate中也拖入一个复选框(注意要设置gridview控件中的ShowFooter属性为true,不然不能显示)

接下来就是给页角的那个复选框增加客户端事件了
可以在源文件加入一个JS函数
function selectAll(control)
{
var ob=control;
xState=ob.checked;
elem=ob.form.elements;

for(i=0;i<elem.length;i++)
{
if(elem[i].type=="checkbox" && elem[i].id!=ob.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
}

给那个页角的复选框增加客户事件代码如下:
<asp:CheckBox ID="CheckBox1" runat="server"
Text="全选" onclick="javascript:selectAll(this);" />

lonelySurvive 2009-03-05
  • 打赏
  • 举报
回复
以上那样做的缺点是,每点次全选,都回回传,造成页面刷新,改进的话,可以放到UpdatePanel里面,或者用Js写实现全选
lonelySurvive 2009-03-05
  • 打赏
  • 举报
回复
在gridView中添加一列checkBox
<asp:TemplateField >
<ItemTemplate>
<asp:CheckBox ID="cb_Select" runat="server" OnCheckedChanged="cb_Select_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>


然后在GridView外在放个 checkBox,实现全选,注意要把这个checkbox的AutoPostBack设成True,你也可以把这个checkBox放到GridView里面,像放到脚注行里面
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)//实现全选
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("cb_Select");
if (CheckBox1.Checked == true)
{
cb.Checked = true;
}
else
{
cb.Checked = false;
}
}
}
hhxxcj 2009-03-05
  • 打赏
  • 举报
回复
<PagerTemplate>用这个模版就行了
<asp:CheckBox ID="ch" runat="server" onclick="getCount(this);"/>
</PagerTemplate>
  • 打赏
  • 举报
回复
写程序不能短视,如果随便一个人放到页面上另外一个选择框你的程序就乱了,那么你写程序的风格就很“危险”,你的pm只有注意到那些程序员有这种“想当然地进行编程”的问题。
加载更多回复(4)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧