ObjectListView选择所有复选框

3
我有一个ObjectListView,其中包含一些选项卡,其中之一是“作业编号”。这个“作业编号”选项卡从数据库中获取作业编号,并在每个作业编号旁边显示一个复选框。我的要求是在该作业编号选项卡本身上添加一个复选框。勾选该复选框后,它应选择其下面的所有作业编号。即,将选择每个作业编号复选框。 是否有任何方法可以实现这一点..我会分享一个屏幕截图供参考..enter image description here

“它应该选择下面所有的工作编号”这句话具体是什么意思?选择3135会导致选择所有低于此号码的条目,因此在这种情况下只有3130吗?还是指列表顺序中的任何“下面”的条目,在这种情况下除了3130之外的所有条目都被选中?无论如何,为什么不直接处理“检查”事件,检查每个条目的工作编号与选择进行比较并以编程方式选择它们呢? - Rev
@Rev1.0..如果您查看屏幕截图,作业编号旁边有一个复选框。我的意思是,如果我单击作业编号旁边的复选框,则应选择下面所有的作业编号。就像全选一样。 - Ksingh
听起来像是一个奇怪的要求。你确定你需要这个吗?使用场景是什么? - Rev
1个回答

1
你需要监听checkitem事件,然后找到被选中的事件,接着勾选它下面的事件。(我假设"工作编号"大于所选项目的工作位于下方且需要被勾选。)
private void objectListView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
    //First we need to cast the received object to an OLVListItem
    BrightIdeasSoftware.OLVListItem olvItem = e.Item as BrightIdeasSoftware.OLVListItem;
    if (olvItem == null)
        return;    //Unable to cast

    //Now we can cast the RowObject as our class
    MyClass my = olvItem.RowObject as MyClass;
    if (my == null)
        return;   //unable to cast

    //We retrieve the jobnumber.  So this is the job number of the item clicked
    int jobNumber = my.Job; 

    //Now loop through all of our objects in the ObjectListView
    foreach(var found in objectListView1.Objects)
    {
        //cast it to our type of object
        MyClass mt = found as MyClass;

        //Compare to our job number, if greater then we check/uncheck the items
        if (mt.Job > jobNumber)
        {
            if (e.Item.Checked)
                objectListView1.CheckObject(mt);
            else
                objectListView1.UncheckObject(mt);
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接