Skip to content

在UltraWebGrid中增加CheckBox列

首先,先在UltraWebGrid中增加一个模板列(Templated Column),该列的Type值要设置成”CheckBox”。那么,现在在UltraWebGrid中就已有了一个CheckBox列。
现在,要在该列的Header上加上一个CheckBox,当点击这个CheckBox时,可以在客户端上进行“全选”/“全不选”操作。

  1. 编辑这列的HeaderTemplate,增加一个id、name都为cbSelectAll的Checkbox。如下所示:
    <igtbl:TemplatedColumn Type=“CheckBox”>
    <HeaderTemplate>
    <input id=“cbSelectAll” name=“cbSelectAll” type=“checkbox” onclick=“SelectAll(0)”/>
    </HeaderTemplate>
    </igtbl:TemplatedColumn>
  2. 增加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”);
    }

  3. 设置UltraWebGrid的客户端事件 ClientSideEvents.InitializeLayoutHandler=”igrdInitializeLayout”

就可以试试看了。

标签:, ,

相关日志

{ 9 } Comments

  1. wangxue | 九月 2, 2008 at 2:27 下午 | Permalink

    你好,有一个问题想请教下您,我用了一个checkbox模板列,他的autopostback我设为false,我点击选中后,在点击header时,页面刷新,之前选择的都消失了,我第一次用的方法是在click中先获取以前的属性,然后重新绑定数据,在将以前的属性重新赋值,但结果是我点击cell这些表格时可以保留以前的属性,但点击header还是消失,在模板列的header里面也有一个全选checkbox,当我点上它,所有的checkbox就能都选中,然后在点击header,此时就能全保留,觉得很奇怪,研究了很久放弃了此方法,用了另一种方法解决了这个问题,但很想知道这个原理,如果您有时间希望能和您讨论下,希望能有回复,谢谢!

    Reply

    icemanpro Reply:

    以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

  2. wangxue | 九月 3, 2008 at 7:57 上午 | Permalink

    你好,我的控件都是ASP控件,点击header和点击cell是不一样的效果,这里面有什么不同的机制吗?还有就是点击header他自动排序,我不想他排序,在cs里面写了方法,请问有在属性里设置能不让他排序的吗?谢谢!

    Reply

    icemanpro Reply:

    排序是displaylayout->AllowSortingDefault值.
    如果都是asp控件的话,点击header和点击cell是一样的。要不你把源代码传过来看下。

    Reply

  3. cosbeta | 九月 3, 2008 at 9:03 下午 | Permalink

    aspx方便的postback会抹杀很多细节,会让很多人做了程序之后而不知道到底是怎么完成的!
    虽然方便,但是把处理的细节给封装起来了,对开发者来说提高了速度,但是不利于学习。
    个人意见,哈哈

    Reply

  4. wangxue | 九月 4, 2008 at 7:44 上午 | Permalink

    那个属性我已经设置了,但不起作用,方便的话能告诉我你的email吗?我整理下发给你看看,谢谢,我的email:wangxue815@hotmail.com,谢谢啦!

    Reply

  5. icemanpro | 九月 4, 2008 at 9:03 上午 | Permalink

    icemanpro@gmail.com

    Reply

  6. wangxue | 九月 4, 2008 at 9:05 上午 | Permalink

    var RowInfo = getGridInfo(“UltraWebGrid1″);
    var ButtonCtrl = RowInfo.FindControlById( “Button2″ , “Edit” );
    呵呵,这个脚本,我调式的时候,他显示需要一个对象,他的key是Edit,你做过这种的吗?我刚接触脚本,不知道如何下手去改,希望能指教一下,谢谢啦!

    Reply

    icemanpro Reply:

    你这不是javascript吧。

    Reply

  7. wangxue | 九月 4, 2008 at 11:13 上午 | Permalink

    恩,那个刚解决了,是脚本,调用了封装的方法,呵呵,我能发EMAIL给你吗?谢谢啦!

    Reply

    icemanpro Reply:

    发吧。

    Reply

    wangxue Reply:

    我不知道邮箱地址,没法发,能告诉下我吗

    Reply

    icemanpro Reply:

    上面不就已给出来了吗?

  8. wangxue | 九月 5, 2008 at 8:13 上午 | Permalink

    thank u very much !

    Reply

  9. lingji8395 | 六月 18, 2009 at 11:53 上午 | Permalink

    谢谢了

    Reply

Post a Comment

Your email is never published nor shared. Required fields are marked *