datagrid中跨页面实现多选

lgbird 2005-10-09 06:41:42
我在做一个跨页面选择删除的一个例子,ASP.NET页面下有一个grid,其中一列是模版列checkbox用于控制是否删除,并且grid已经实现分页,每点击下页都会重新读取数据库,我想实现用户选择各个页面中需要删除的行后,单击页面删除按钮,能统一删除所有页面选中的行,而不是一个页面操作一次
我参考网上例子写了一些代码,可是有错误,希望大家帮忙解决,同时可以提出更好的代码实例。
html部分:
<HTML>
<HEAD>
<title>DataGrid使用举例</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="JAVASCRIPT">
function AddRemoveValues(oChk)
{
UserDelete.HdnSelectedValues.value += "," + oChk.value;

}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datagrid id="dgShow" style="Z-INDEX: 101; LEFT: 69px; POSITION: absolute; TOP: 90px" runat="server"
AllowPaging="True" AutoGenerateColumns="False" ForeColor="Black" GridLines="None" CellPadding="2"
BackColor="LightGoldenrodYellow" BorderWidth="1px" BorderColor="Tan" Height="172px" Width="842px">
<SelectedItemStyle ForeColor="GhostWhite" BackColor="DarkSlateBlue"></SelectedItemStyle>
<AlternatingItemStyle BackColor="PaleGoldenrod"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" BackColor="Tan"></HeaderStyle>
<FooterStyle BackColor="Tan"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="选择">
<ItemTemplate>
<INPUT id=chkSelect onclick=AddRemoveValues(this) type=checkbox value='<%# DataBinder.Eval(Container,"DataItem.StudentID") %>' name=chkSelect runat="server">
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="StudentID" ReadOnly="True" HeaderText="学生ID"></asp:BoundColumn>
<asp:BoundColumn DataField="StudentName" HeaderText="学生姓名"></asp:BoundColumn>
<asp:BoundColumn DataField="StudentPass" HeaderText="密码"></asp:BoundColumn>
<asp:BoundColumn DataField="Sex" HeaderText="性别"></asp:BoundColumn>
<asp:BoundColumn DataField="Birthday" HeaderText="生日"></asp:BoundColumn>
<asp:BoundColumn DataField="Email" HeaderText="邮件地址"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="性别模板列">
<ItemTemplate>
<asp:RadioButton id=RadioButton2 runat="server" Enabled="False" Checked='<%# DataBinder.Eval(Container, "DataItem.Sex") %>' Text="男">
</asp:RadioButton>
<asp:RadioButton id=RadioButton1 runat="server" Enabled="False" Checked='<%# !(bool)DataBinder.Eval(Container, "DataItem.Sex") %>' Text="女">
</asp:RadioButton>
</ItemTemplate>
<EditItemTemplate>
<asp:RadioButton id=cbSex runat="server" Checked='<%# DataBinder.Eval(Container, "DataItem.Sex") %>' Text="男" GroupName="Sex">
</asp:RadioButton>
<asp:RadioButton id=RadioButton4 runat="server" Checked='<%# !(bool)DataBinder.Eval(Container, "DataItem.Sex") %>' Text="女" GroupName="Sex">
</asp:RadioButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn Text="选择" HeaderText="选择" CommandName="Select"></asp:ButtonColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="操作" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
<asp:TemplateColumn HeaderText="自定义删除">
<ItemTemplate>
<asp:Button id="btnDelete" runat="server" Text="删除" CommandName="UserDelete"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn Text="点击查看" DataNavigateUrlField="StudentID" DataNavigateUrlFormatString="Show.aspx?ID={0}"
DataTextField="StudentName" HeaderText="详细信息"></asp:HyperLinkColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="DarkSlateBlue" BackColor="PaleGoldenrod"></PagerStyle>
</asp:datagrid>

<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 376px; POSITION: absolute; TOP: 472px" runat="server"
Text="Button"></asp:Button>
<INPUT id=HdnSelectedValues type=hidden name=HdnSelectedValues runat="server">

</FONT>
</form>
</body>
</HTML>
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
adandelion 2005-10-26
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4290/4290095.xml?temp=.1783869
lgbird 2005-10-10
  • 打赏
  • 举报
回复
ChengKing的回答只能起到全选或者全部取消的功能,我所提问的是关于分页选择后,跨页还能保存上N页已经选择的信息
triffang 2005-10-09
  • 打赏
  • 举报
回复
关注
ChengKing 2005-10-09
  • 打赏
  • 举报
回复
(一).功能

1. JavaScript检索CheckBox并实现全选和全消功能

用C#等写的CheckBox需要回发到服务端执行,
而用JavaScript可以在直接客户端实现,效率高些

(二).代码

1. DataGrid中的代码主要片段:

<Columns>

<HeaderTemplate> //头模板代码
<asp:CheckBox id="chkHeader" runat="server" AutoPostBack="False" //AutoPostBack设为假,不需要回发

onclick="javascript:SelectAll(this);"></asp:CheckBox>
</HeaderTemplate>

<ItemTemplate> //项模板代码
<asp:CheckBox id="chkItem" runat="server"></asp:CheckBox>
</ItemTemplate>

</Columns>

2. 在当页加入:

<script language="javascript">
function SelectAll(tempControl)
{
//将除头模板中的其它所有的CheckBox取反

var theBox=tempControl;
xState=theBox.checked;

elem=theBox.form.elements;
for(i=0;i<elem.length;i++)
if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
</script>

lgbird 2005-10-09
  • 打赏
  • 举报
回复
这篇文章我看到过,上面的代码就是按照那里提供代码改的,可是运行没反应
c9714052 2005-10-09
  • 打赏
  • 举报
回复
问题的关键是保存所选行。

我记得孟子e章上有这个例子,当时他用的是一个hidden控件来保存选中的行。用viewstate来保存也行。

62,047

社区成员

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

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

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

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