Проверьте, существуют ли данные в gridview Asp.net - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь проверить вид сетки, если номер идентификатора существует, и выдает сообщение об ошибке, в противном случае добавить данные в вид сетки.Это то, что я имею до сих пор;Я получаю сообщение об ошибке, но в то же время добавляю в сетку.Данные извлекаются из другого вида сетки.

int row = GridView1.Rows.Count - 1;
    String val = GridView1.Rows[row].Cells[1].Text.ToString();

    foreach (GridViewRow rows in GridView2.Rows)
    {
        for (int i = 0; i < GridView2.Columns.Count; i++)
        {
            //String header = GridView2.Columns[i].HeaderText;
            String cellText = rows.Cells[i].Text;
            if (val == cellText)
            {
                lblError.Text = "ID number already assigned!!";
            }


        }

    }
    if (GridView2.Rows.Count >= 0)
    {
        DataRow dr = dt.NewRow();


        dr["StudentName"] = GridView1.Rows[row].Cells[0].Text;
        dr["IDNum"] = GridView1.Rows[row].Cells[1].Text;


        dt.Rows.Add(dr);
    }

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

У вас есть несколько проблем в коде.

Первый: у вас есть значения идентификатора, отображаемые во 2-м столбце таблицы, и вы продолжаете цикл по всем столбцам просто для сравнения номера идентификатора.

Вы можете избежать внутреннего цикла for.

Второе: Также, как только вы обнаружите, что идентификационный номер уже существует в виде сетки, вы должны выйти из цикла.Нет смысла проходить по всем другим строкам, если вы знаете, что идентификатор существует.

В-третьих: как только вы вышли из цикла foreach, вы просто сравниваете число строк в GridView с 0 и пытаетесьдобавить строку в gridview.Но на самом деле то, что вам нужно проверить, если в цикле foreach найден идентификатор.И если он найден, вы не должны добавлять строку в сетку.

Таким образом, ваш код выглядит следующим образом.

int row = GridView1.Rows.Count - 1;

String val = GridView1.Rows[row].Cells[1].Text.ToString();
bool idFound = false;
foreach (GridViewRow rows in GridView2.Rows)
{
    //Get the Text of 2nd Cell in cellText Variable.
    String cellText = rows.Cells[1].Text;
    if (val == cellText)
    {
        //Display error message and set idFound value to true.
        lblError.Text = "ID number already assigned!!";
        idFound = true;
    }
}

//Check value of idFound, if it is false then add row to GridView1
if (!idFound)
{
    DataRow dr = dt.NewRow();
    dr["StudentName"] = GridView1.Rows[row].Cells[0].Text;
    dr["IDNum"] = GridView1.Rows[row].Cells[1].Text;
    dt.Rows.Add(dr);
}
0 голосов
/ 26 апреля 2018

Вы можете добавить логический флаг ошибки следующим образом:

int row = GridView1.Rows.Count - 1;
String val = GridView1.Rows[row].Cells[1].Text.ToString();

bool errorFound = false;

foreach (GridViewRow rows in GridView2.Rows)
{
    for (int i = 0; i < GridView2.Columns.Count; i++)
    {
        //String header = GridView2.Columns[i].HeaderText;
        String cellText = rows.Cells[i].Text;
        if (val == cellText)
        {
            errorFound = true;
            lblError.Text = "ID number already assigned!!";
        }
    }
}

if (GridView2.Rows.Count >= 0 && !errorFound)
{
    DataRow dr = dt.NewRow();

    dr["StudentName"] = GridView1.Rows[row].Cells[0].Text;
    dr["IDNum"] = GridView1.Rows[row].Cells[1].Text;

    dt.Rows.Add(dr);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...