如何在添加行时停止DataGrid?

时间:2010-10-11 07:49:13

标签: c#

这是我的方法:

Datatable data2 = new Datatable();
int result = 0;
using (SqlConnection conn = new SqlConnection(connStr))
{
    try
    {
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        conn.Open();
        cmd.CommandText = "SELECT * from TableA";
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        result = da.Fill(data2);

        if (result > 0)
        {
            this.dgBatch.DataSource = data2;
        }
        else
        {
            MessageBox.Show("No Records!");
        }
    }
    catch (Exception ee)
    {
        MessageBox.Show(ee.Message);
    }
    finally
    {
        if (conn.State == ConnectionState.Open) conn.Close();
    }
}

如果我连续调用此方法,它总是从第一个查询中添加行。

例如:
表数据:5
第一次电话:5
第二次呼叫:10。它复制第一次呼叫的所有记录。

表示感谢

2 个答案:

答案 0 :(得分:3)

那是因为你正在重用data2。您应该在以下行之前为data2创建一个新实例:

result = da.Fill(data2);

答案 1 :(得分:1)

假设data2是数据表

result = da.Fill(data2);将始终合并结果,因为您正在使用相同的数据表实例。

如果你想每次都获得一个新副本而不是创建一个新的datatable实例,而不是用数据填充这个实例。

所以结果之前的行= da.Fill(data2);添加以下行。

data2 = new Datatable();