jQuery Repeater多行操作与进度显示

在Web开发中,经常需要对数据表格进行多行操作,例如全选、取消选择、标记为垃圾邮件等。jQueryRepeater控件提供了一种方便的方式来实现这些功能。本文将详细讲解如何使用jQuery Repeater进行多行操作,并展示操作的进度。

准备

在开始之前,请确保已经熟悉了ASP.NET和jQuery的基本使用。可以通过以下链接下载示例代码:

示例代码下载:

代码目录位于:/repeater/Default.aspx

MultipleSelect属性

MultipleSelect属性用于控制Repeater控件是否允许多行选择,默认值为true。如果设置为false,则只能选择一行。

示例代码:

<ItemTemplate> <tr> <td> <input type="checkbox" je-checked="selected" je-onclick="toggleselect,false" /> </td> </tr> </ItemTemplate>

在上述代码中,toggleselect方法后面跟一个布尔参数,默认为true,表示取消前一行的选择状态。如果将参数设置为false,则可以选择多行。此外,还可以调用selectunselect方法来选择或取消选择一行。

SelectAll方法

通常,会在Repeater控件的底部模板中添加一个“全选”按钮:

<FooterTemplate> <tfoot> <tr> <td colspan="4"> <a href="#" je-onclick="selectall">全选</a> <a href="#" je-onclick="unselectall">取消全选</a> <a href="#" je-onclick="toggleselectall">切换全选</a> </td> </tr> </tfoot> </FooterTemplate>

je-onclick设置为selectall,点击该链接时,所有行将被选中。此外,还可以将je-onclick设置为unselectalltoggleselectall

多行操作

Repeater控件支持使用removeselectedcustomselected方法对多行进行操作:

<je:Repeater ID="emailRepeater" runat="server" Selector="'#list'" CustomAsync-Url="webservice.asmx" CustomAsync-MethodName="CustomEMail" ... > <FooterTemplate> <tfoot> <tr> <td colspan="4"> <a href="#" je-onclick="customselected,'spam'">标记为垃圾邮件</a> <a href="#" je-onclick="customselected,'unspam'">取消垃圾邮件标记</a> </td> </tr> </tfoot> </FooterTemplate> </je:Repeater>

在上述示例中,调用customselected方法对选中的行执行自定义操作,自定义操作的名称为spamunspam。自定义操作将调用WebService.asmx中的CustomEMail方法:

[WebMethod] [ScriptMethod] public SortedDictionary<string, object> CustomEMail ( int id, string no, bool isspam, string command ) { this.Context.Response.Cache.SetNoStore(); if (command == "spam") { isspam = true; Thread.Sleep(1000); } else if (command == "unspam") { isspam = false; Thread.Sleep(1000); } else if (command == "togglespam") isspam = !isspam; // 返回JSON }

CustomEMail方法中,使用Thread类的Sleep方法来延长执行时间,以便在页面上显示执行进度。

获取进度

可以通过设置SubStepping属性为JavaScript方法来获取进度:

<je:Repeater ID="emailRepeater" runat="server" Selector="'#list'" PageSize="5" IsVariable="true" ... CustomAsync-Url="webservice.asmx" CustomAsync-MethodName="CustomEMail" PreSubStep="function(pe, e){ pb.progressbar('option', 'value', 0).show(); }" SubStepping="function(pe, e){ pb.progressbar('option', 'value', (100 * e.substep.completed / e.substep.count)); emailRepeater.__repeater('showtip', 'Completed ' + e.substep.completed); }" SubStepped="function(pe, e){ pb.hide(); }"> </je:Repeater>

SubStepping中,参数e有一个名为substep的属性,count属性表示总行数,completed属性表示已完成的行数。此外,通过repeatershowtip方法,显示进度消息。关于如何显示消息,可以参考Show Message injQueryRepeaterWhen Validate Or Update

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485