如何在gridview中单击时避免两个空行

时间:2014-08-08 06:56:08

标签: c# jquery asp.net gridview

我有一个网格视图。如果单击“添加”按钮,则会创建一个空行。网格视图中有多个空行。现在,如果单击所选行上的删除按钮,则会删除所有空行。我想只删除选定的空行。

谢谢..请帮助..

删除代码在这里......

protected void gvEmployeeDetails_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    Label lblEmpID = (Label)gvEmployeeDetails.Rows[e.RowIndex].FindControl("lblEmpID");

    conn.Open();
    string cmdstr = "delete from EmployeeDetails where empid=@empid";
    SqlCommand cmd = new SqlCommand(cmdstr, conn);
    cmd.Parameters.AddWithValue("@empid", lblEmpID.Text);
    cmd.ExecuteNonQuery();
    conn.Close();
    BindData();
}

在这里添加行代码......... 在添加行中,如果名称文本框为空,我想要警告消息

  protected void gvEmployeeDetails_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("ADD"))
    {
        TextBox txtAddEmpID = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddEmpID");
        TextBox txtAddName = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddName");
        TextBox txtAddDesignation = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddDesignation");
        TextBox txtAddCity = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddCity");
        TextBox txtAddCountry = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddCountry");

        conn.Open();
        string cmdstr = "insert into EmployeeDetails(empid,name,designation,city,country) values(@empid,@name,@designation,@city,@country)";
        SqlCommand cmd = new SqlCommand(cmdstr, conn);
        cmd.Parameters.AddWithValue("@empid", txtAddEmpID.Text);
        cmd.Parameters.AddWithValue("@name", txtAddName.Text);
        cmd.Parameters.AddWithValue("@designation", txtAddDesignation.Text);
        cmd.Parameters.AddWithValue("@city", txtAddCity.Text);
        cmd.Parameters.AddWithValue("@country", txtAddCountry.Text);
        cmd.ExecuteNonQuery();
        conn.Close();
        BindData();
    }
}

3 个答案:

答案 0 :(得分:1)

您可以将“empid”列更改为Identity吗?这是从SQL管理工作室完成的,它将使您的列成为唯一的,并自动增加其中的值。之后,您将从Add方法中删除它,SQL将负责它。这将解决您的问题。

在SQL中,您必须转到EmployeeDetails表。从您的选项中选择设计,然后转到empid列。在其上,您可以打开列属性并展开“标识规范”。然后将“(Is Idetity)”更改为“是”并保存表格。请参见下面的屏幕截图:

enter image description here

然后你的添加代码应该是这样的:

protected void gvEmployeeDetails_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("ADD"))
    {
        TextBox txtAddName = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddName");
        if(string.IsNullOrEmpty(txtAddName.Text))
        {
          MessageBox.Show("Name is empty"); // or some logging, you decide
        }
        else
        {
            TextBox txtAddDesignation = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddDesignation");
            TextBox txtAddCity = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddCity");
            TextBox txtAddCountry = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddCountry");

            conn.Open();
            string cmdstr = "insert into EmployeeDetails(name,designation,city,country) values(@name,@designation,@city,@country)";
            SqlCommand cmd = new SqlCommand(cmdstr, conn);
            cmd.Parameters.AddWithValue("@name", txtAddName.Text);
            cmd.Parameters.AddWithValue("@designation", txtAddDesignation.Text);
            cmd.Parameters.AddWithValue("@city", txtAddCity.Text);
            cmd.Parameters.AddWithValue("@country", txtAddCountry.Text);
            cmd.ExecuteNonQuery();
            conn.Close();
            BindData();
        }
    }
}

答案 1 :(得分:-1)

试试这段代码:

   gvEmployeeDetails.AllowUserToAddRows = false;

它会自动删除空行。

答案 2 :(得分:-1)

也尝试这个,

gvEmployeeDetails.DeleteRow(Row name/index);