C# DataGrid在DataTable为空时显示空行

C# DataGrid在DataTable为空时显示空行,c#,wpf,datatable,C#,Wpf,Datatable,我有一个DataGrid(dg1)绑定到DataTable(DataSet.Tables)。 代码运行正常,DataGrid正确显示了DataTable中的数据 但是,如果我Clear()这个DataTable,这个DataGrid也是清晰的,但是只剩下一行空的,我不知道如何去掉它。我已经清除了数据表。这一空排是从哪里来的 SqlCeDataAdapter da = new SqlCeDataAdapter(); string sqlStr = @"SELECT * FROM FooTable

我有一个
DataGrid
dg1)绑定到
DataTable
DataSet.Tables)。 代码运行正常,
DataGrid
正确显示了
DataTable
中的数据

但是,如果我
Clear()
这个
DataTable
,这个
DataGrid
也是清晰的,但是只剩下一行空的,我不知道如何去掉它。我已经清除了数据表。这一空排是从哪里来的

SqlCeDataAdapter da = new SqlCeDataAdapter();

string sqlStr = @"SELECT * FROM FooTable";
da.SelectCommand = new SqlCeCommand(sqlStr, conn);

da.Fill(ds, "FooTable");

/* get data table reference */
dt = ds.Tables["FooTable"];

DataRow newRow = dt.NewRow();
newRow["FooName"] = "Donkey";
dt.Rows.Add(newRow);

dg1.ItemsSource = ds.Tables[0].DefaultView;
dt.Clear();

显示的空行可能是因为默认情况下,在datagrid中,空行位于最后一行,以便用户可以添加新行。 试着做
dataGridView1.AllowUserToAddress=false

该行通常是NewItemPlaceholder,用于在绑定集合中创建新项。您应该尝试将设置为
false

@Abdul Muqtadir:正确的解释

下面的代码将执行您正在查找的操作:

   dataGridView1.AllowUserToAddRows = false;
   dataGridView1.DataSource = null;

对于Datagrid,应将Datagrid.CanUserAddRows设置为false

你把datagrid的allowaddrow属性设置为false了吗?@Jonathan,我把它设置为false。仍然保留空行。奇怪。顺便说一句,allowdrop和它有什么关系?他说AllowDrow,不是allowdrop…DataGrid.H.B中没有AllowDrow方法。是正确的,只需调用它。mydatagridctrl.CanUserAddRows=false;我需要您的代码隐藏(在初始化Component()之后)