为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件获取GridView的具体记录

根据条件获取GridView的具体记录

C#
慕村9548890 2021-08-07 16:14:21
我试图从网格视图中获取最后两个值,不包括零价格的项目。网格视图数据ITEMCODE    ITEMNAME       PRICE001         Ice Tea         5.0000002         Super Delux     12.0000003         Meditern Veg    0.0000004         Super  L        0.0000005         Super  L        33.0000所以在这种情况下所需的输出是Value1:005Value2:002代码protected void Button1_Click(object sender, EventArgs e){    int count = 0;    foreach (GridViewRow row in this.GridView1.Rows)    {        if ((row.Cells[2].Text != "0"))        {            count = (count + 1);        }    }    Int32 Value1 = (count - 1);    Int32 Value2 = (count - 2);    lblValue1.Text = GridView1.Rows[Value1].Cells[0].Text;    lblValue2.Text = GridView1.Rows[Value2].Cells[0].Text;}我厌倦的代码没有返回所需的输出。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

这应该有效:


protected void Button1_Click(object sender, EventArgs e)

{

    List<DataGridViewRow> CountRows = new List<DataGridViewRow>();

    for (int i = this.GridView1.Rows.Count-1; CountRows.Count < 2 || i >= 0; i--)

    {

        if ((double)this.GridView1.Rows[i].Cells[2].Value != 0)

        {

            CountRows.Add(this.GridView1.Rows[i]);

        }


    }


    if(CountRows.Count >= 1)

    {

        lblValue1.Text = "Value1:" + CountRows[0].Cells[0].Text;

    }

    if(CountRows.Count == 2)

    {

        lblValue2.Text = "Value2:" + CountRows[1].Cells[0].Text;

    }

}

我所做的是使用常规 for 循环从结束到开始计数,当找到 2 行或到达开始时停止。找到的行被放在一个列表中以保存它们。


我在最后使用了额外的 if,以免在找到少于 2 行时(不是在您的示例中)使索引超出范围异常。请随意编辑。


希望能帮助到你!


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信