检查gridview Asp.net中是否存在数据

时间:2018-04-25 23:20:57

标签: c# asp.net gridview

我试图检查gridview是否存在id号并抛出错误消息,否则将数据添加到gridview。这就是我到目前为止所拥有的;我收到错误消息,但同时也添加到gridview。正在从另一个网格视图中提取数据。

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 :(得分:1)

你可以像这样添加布尔错误标志:

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);
}

答案 1 :(得分:0)

您在代码中遇到了多个问题。

首先:您在网格的第二列中显示了ID值,但您仍在循环所有列以比较ID号。

你可以避免内在循环。

第二:一旦你发现网格视图中已经存在ID号,你应该突破循环。一旦知道该ID存在,就没有必要通过所有其他行。

第三:一旦你离开了foreach循环,你只需将GridView中的行数与0进行比较,并尝试将行添加到gridview。但实际上您需要检查是否在foreach循环中找到了ID。如果找到,则不应将行添加到网格视图。

所以你的代码如下所示。

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);
}