ASP.NET的gridview里checkbox实现多行删除,可是gridview里只有一行数据时却删除不了?

Qing278916117 2011-05-06 10:16:12
//gridview里的checkbox
<asp:TemplateField>
<ItemTemplate>
<input name="CheckboxGroup" type="checkbox" value='<%#Eval("ID") %>'>
</ItemTemplate>
</asp:TemplateField>

//全选,反选,删除按钮
<a href ="#" onclick="SelectAll();">全选</a>
<a href="#" onclick="ReverseSelect();">反选</a>
<asp:LinkButton ID="LinkButtonDelete" runat="server"
onclick="LinkButtonDelete_Click" onclientclick="javascript:return ConfirmDelete();">删除 </asp:LinkButton>

//删除按钮的后台代码
protected void LinkButtonDelete_Click(object sender, EventArgs e)
{
string deleteSQL = "delete from table where ID in (" + Request["CheckboxGroup"] + ")";
Conn.Open();
SqlCommand cmd = new SqlCommand(sql, Conn);
cmd.ExecuteNonQuery();
Conn.Close();
}

应该是下面代码有问题,但不会改,对javascript不是很熟,求教

//javascript全选,反选实现
<script language="javascript" type="text/javascript">
//反选
function ReverseSelect()
{
var checkbox = document.all.CheckboxGroup;
if(checkbox==null)
{
return false; }

if(checkbox.length+""!="undefined") //checkbox.length是什么意思?为什么要 +"" ?
{
for( var i=0;i<checkbox.length;i++ )
{
checkbox[i].checked = !checkbox[i].checked;
}
}
else
{
// 修正当列表长度为1时,不能反选的BUG
checkbox.checked = !checkbox.checked;
}
return false;
}
//全选
function SelectAll()
{
var checkbox = document.all.CheckboxGroup;
if(checkbox==null)
{
return false; }

if( checkbox.length+""!="undefined")
{
for( var i=0;i<checkbox.length;i++ )
{
checkbox[i].checked = true;
}
}
else
{
checkbox.checked = true;
}
return false; }
//检查是否至少选择了一项
function CheckHasSelectedItem()
{
var checkbox = document.all.CheckboxGroup;
if(checkbox==null)
{
return false; }

if( checkbox.length+""!="undefined")
{
for( var i=0;i<checkbox.length;i++ )
{
if(checkbox[i].checked)
{
return true;
}
}
}
else
{
return false;
}
}
//删除用户前的确认
function ConfirmDelete()
{
if(CheckHasSelectedItem())//如果至少选择了一项
{
return confirm("确认删除选中项的项?");
}
else
{
alert("请至少选择一项!");
return false;
}
}
</script>
...全文
357 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qing278916117 2011-05-13
  • 打赏
  • 举报
回复
前几天找到了解决方法,现在回来结贴
解决:http://www.chinahtml.com/0602/javascript-11394039693440.html
子夜__ 2011-05-07
  • 打赏
  • 举报
回复
无论有多少行

看Request["CheckboxGroup"]这个值有没有就行了,。
HelloJimmy520 2011-05-07
  • 打赏
  • 举报
回复
Request.Form["CheckboxGroup"]:试试看
Qing278916117 2011-05-07
  • 打赏
  • 举报
回复
问题就是当gridview里只有一行数据时,根本就判断不了是否被选中了,更不用说获取里面的值了,我昨天在csdn上看到有一个贴子好像是说gridview里的checkbox当只有一项时好像是有点不同的,现在找不回那帖子了,望高手解决!
子夜__ 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qing278916117 的回复:]

问题就是当gridview里只有一行数据时,根本就判断不了是否被选中了,更不用说获取里面的值了,我昨天在csdn上看到有一个贴子好像是说gridview里的checkbox当只有一项时好像是有点不同的,现在找不回那帖子了,望高手解决!
[/Quote]
如果是这样可以这么考虑


IF Gridview1.Rows.Count==1;
只获取这一行的ID 进行传值
Qing278916117 2011-05-07
  • 打赏
  • 举报
回复
还是不行,当gridview有多行数据时可以实现删除,但是现在是当gridview里只有一行数据时,选中checkbox之后,点击删除,就会弹出提示对话框("请至少选择一项!"),这说明里面的“检查是否至少选择了一项”的方法CheckHasSelectedItem()已经不管用了,根本就检测不到是否被选中了,更不用说获取值了,就是不知道要怎么去改这方法里面的代码,求教啊!

62,046

社区成员

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

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

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

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