Получить конкретные записи GridView на основе условия - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить последние значения буксировки из сетки, исключая элемент с нулевой ценой.

Данные вида сетки

ITEMCODE    ITEMNAME       PRICE
001         Ice Tea         5.0000
002         Super Delux     12.0000
003         Meditern Veg    0.0000
004         Super  L        0.0000
005         Super  L        33.0000

Таким образом, желаемый результат в этом случае составляет

Value1:005
Value2: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 Ответ

0 голосов
/ 12 июня 2018

Это должно работать:

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 строк (не в вашем примере).Не стесняйтесь редактировать, как вам угодно.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...