c# - 在 C#.net GridView 中生成重复值
问题描述
我的 C# 代码在 Datagridview 中生成重复值。我的代码看起来像
公共无效按钮1_Click(对象发送者,EventArgs e){
this.Size = new System.Drawing.Size(818, 608);
SqlConnection connection = new SqlConnection(connectionstring);
connection.Open();
SqlCommand cmd = new SqlCommand("select CustomerCode, AccountNo, Branch, FirstName, LastName, Sex, MaritialStatus, MobileNo, Email, HomeCity from MasterTable where CustomerCode LIKE '%' + @CusCode AND FirstName LIKE '%' +@FirstName AND AccountNo LIKE '%' +@AccountNo AND Branch LIKE '%' +@Branch", connection);
dataGridView1.Refresh();
cmd.Parameters.AddWithValue("@CusCode", textBox1.Text.Trim());
cmd.Parameters.AddWithValue("@FirstName", txtname.Text.Trim());
cmd.Parameters.AddWithValue("@AccountNo", txtac.Text.Trim());
cmd.Parameters.AddWithValue("@Branch", txtbranch.Text.Trim());
cmd.ExecuteNonQuery();
DataTable dtt = new DataTable();
SqlDataAdapter sdap = new SqlDataAdapter(cmd);
sdap.Fill(dtt);
dataGridView1.DataSource = dtt;
sdap.Fill(dtt);
dataGridView1.DataSource = dtt;
connection.Close();
}
解决方案
您使用 dt 填充 sdap 两次,这在 DataAdapter 中添加了两次行,并在向其提供 Datasource 时,它与双行适配器绑定并显示 Duplicate Rows。更正的代码 -
public void button1_Click(object sender, EventArgs e)
{
this.Size = new System.Drawing.Size(818, 608);
SqlConnection connection = new SqlConnection(connectionstring);
connection.Open();
SqlCommand cmd = new SqlCommand("select CustomerCode, AccountNo, Branch, FirstName, LastName, Sex, MaritialStatus, MobileNo, Email, HomeCity from MasterTable where CustomerCode LIKE '%' + @CusCode AND FirstName LIKE '%' +@FirstName AND AccountNo LIKE '%' +@AccountNo AND Branch LIKE '%' +@Branch", connection);
dataGridView1.Refresh();
cmd.Parameters.AddWithValue("@CusCode", textBox1.Text.Trim());
cmd.Parameters.AddWithValue("@FirstName", txtname.Text.Trim());
cmd.Parameters.AddWithValue("@AccountNo", txtac.Text.Trim());
cmd.Parameters.AddWithValue("@Branch", txtbranch.Text.Trim());
cmd.ExecuteNonQuery();
DataTable dtt = new DataTable();
SqlDataAdapter sdap = new SqlDataAdapter(cmd);
sdap.Fill(dtt);
dataGridView1.DataSource = dtt;
// sdap.Fill(dtt); // Making the Rows Double
// dataGridView1.DataSource = dtt;
connection.Close();
}