如何在Gridview上仅选择前100行

时间:2015-08-27 09:38:56

标签: asp.net gridview

我的gridview包含其中一列中的复选框,然后有一个"选择ALl"按钮,当点击时必须检查列表中的前100个CB,客户明确表示他们不想要分页,使用分页更容易做到这一点并且每页只显示100条记录然后当点击全部选择按钮时给定页面被选中但是这不是客户想要的

这是我的代码:

foreach (GridViewRow row in dgridTransactions.Rows)
{
    for (int x = 0; x <=100;x++ )
    {
        var oneTransaction = (CheckBox)row.FindControl("chkAssigned");
        oneTransaction.Checked = true;
    }
}

3 个答案:

答案 0 :(得分:1)

如果你想运行前100行,你只需要这个循环

for(int x = 0; x < 100; x++)
{
    GridViewRow row = dgridTransactions.Rows[x];
    // then manage row properties
    CheckBox cb = (CheckBox)row.FindControl("chkAssigned");
    cb.Checked = true;
}

答案 1 :(得分:0)

您的代码中存在问题 您可以使用以下代码

int x=0;
foreach (GridViewRow row in dgridTransactions.Rows)
{
    if(x<100 )
    {
        var oneTransaction = (CheckBox)row.FindControl("chkAssigned");
        oneTransaction.Checked = true;
    }
    else
        break;
    x++;
}

网格中的每一行都会运行foreach (GridViewRow row in dgridTransactions.Rows)循环。

并且您正在使用for (int x = 0; x <=100;x++ ){,每行运行100次。

您可以使用jquery或javascript这是JSFiddle可以帮助您

答案 2 :(得分:0)

怎么样:

foreach (GridViewRow row in dgridTransactions.Rows.Cast<GridViewRow>().Take(100)) {
    CheckBox cb = row.FindControl("chkAssigned") as CheckBox;
    if (cb != null)
      cb.Checked = true;
  }

这将使第一项最多为100,所以如果你只有90,它将给出90。 不同的铸造方式还可以为您提供额外的安全措施,以防万一找不到控件。直接强制转换只会抛出一个异常,它总是比查看castes对象是否为null ...

更重

如果您不关心演员表验证,可以将所有内容都内联到此:

dgridTransactions.Rows.Cast<GridViewRow>().Take(100).ToList().ForEach(x => ((CheckBox)x.FindControl()).Checked = true);