首先,先在UltraWebGrid中增加一个模板列(Templated Column),该列的Type值要设置成”CheckBox”。那么,现在在UltraWebGrid中就已有了一个CheckBox列。
现在,要在该列的Header上加上一个CheckBox,当点击这个CheckBox时,可以在客户端上进行“全选”/“全不选”操作。
- 编辑这列的HeaderTemplate,增加一个id、name都为cbSelectAll的Checkbox。如下所示:
<igtbl:TemplatedColumn Type=“CheckBox”>
<HeaderTemplate>
<input id=“cbSelectAll” name=“cbSelectAll” type=“checkbox” onclick=“SelectAll(0)”/>
</HeaderTemplate>
</igtbl:TemplatedColumn> - 增加JavaScript函数SelectAll()和igrdInitializeLayout():
var oGrid;
var cbSelectAll;//Selects all checkboxes in the grid
function SelectAll(colIndex)
{
var checked = cbSelectAll.checked;for (i = 0; i < oGrid.Rows.length; i++)
{
oGrid.Rows.getRow(i).getCell(colIndex).setValue(checked);
}}
//Intialization function which sets the grid reference
function igrdInitializeLayout(object)
{
oGrid = igtbl_getGridById(object);
//need to set it here due to Infragistic’s handling of columns.
cbSelectAll = document.getElementById(“cbSelectAll”);
} - 设置UltraWebGrid的客户端事件 ClientSideEvents.InitializeLayoutHandler=”igrdInitializeLayout”
就可以试试看了。


{ 9 } Comments
你好,有一个问题想请教下您,我用了一个checkbox模板列,他的autopostback我设为false,我点击选中后,在点击header时,页面刷新,之前选择的都消失了,我第一次用的方法是在click中先获取以前的属性,然后重新绑定数据,在将以前的属性重新赋值,但结果是我点击cell这些表格时可以保留以前的属性,但点击header还是消失,在模板列的header里面也有一个全选checkbox,当我点上它,所有的checkbox就能都选中,然后在点击header,此时就能全保留,觉得很奇怪,研究了很久放弃了此方法,用了另一种方法解决了这个问题,但很想知道这个原理,如果您有时间希望能和您讨论下,希望能有回复,谢谢!
Reply
icemanpro Reply:
九月 2nd, 2008 at 22:53
以2008 vol2 clr3.5为例,新建个ultrawebgrid,将模板列的type设为checkbox,模板列中的checkbox的checked状态能自动被保存到viewstate中,即postback后,checkbox的状态不变。而本文中模板列的header模板中放的是html的checkbox而不是asp:checkbox。这么,当页面postback后,header中的checkbox的状态就会还原。可用asp:checkbox代替原checkbox。那么,即使postback后,checkbox的ehecked值依然不变。
Reply
你好,我的控件都是ASP控件,点击header和点击cell是不一样的效果,这里面有什么不同的机制吗?还有就是点击header他自动排序,我不想他排序,在cs里面写了方法,请问有在属性里设置能不让他排序的吗?谢谢!
Reply
icemanpro Reply:
九月 3rd, 2008 at 11:50
排序是displaylayout->AllowSortingDefault值.
如果都是asp控件的话,点击header和点击cell是一样的。要不你把源代码传过来看下。
Reply
aspx方便的postback会抹杀很多细节,会让很多人做了程序之后而不知道到底是怎么完成的!
虽然方便,但是把处理的细节给封装起来了,对开发者来说提高了速度,但是不利于学习。
个人意见,哈哈
Reply
那个属性我已经设置了,但不起作用,方便的话能告诉我你的email吗?我整理下发给你看看,谢谢,我的email:wangxue815@hotmail.com,谢谢啦!
Reply
icemanpro@gmail.com
Reply
var RowInfo = getGridInfo(“UltraWebGrid1″);
var ButtonCtrl = RowInfo.FindControlById( “Button2″ , “Edit” );
呵呵,这个脚本,我调式的时候,他显示需要一个对象,他的key是Edit,你做过这种的吗?我刚接触脚本,不知道如何下手去改,希望能指教一下,谢谢啦!
Reply
icemanpro Reply:
九月 4th, 2008 at 09:18
你这不是javascript吧。
Reply
恩,那个刚解决了,是脚本,调用了封装的方法,呵呵,我能发EMAIL给你吗?谢谢啦!
Reply
icemanpro Reply:
九月 4th, 2008 at 13:59
发吧。
Reply
wangxue Reply:
九月 4th, 2008 at 15:01
我不知道邮箱地址,没法发,能告诉下我吗
Reply
icemanpro Reply:
九月 4th, 2008 at 17:31
上面不就已给出来了吗?
thank u very much !
Reply
谢谢了
Reply
Post a Comment