Ответ 1
Я уверен, вам просто нужно обновить datagrid. Попробуйте следующее:
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
Если это работает... вы можете захотеть переосмыслить эту часть своего приложения.
Здесь возникает проблема. Я хочу удалить все строки из datagridview. Это как добавить строки:
private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[] results)
{
foreach (Opc.Da.ItemValueResult readResult in results)
{
dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(readResult.ItemName, readResult.Quality, readResult.Timestamp,readResult.Value)));
}
}
И его как я вижу gridview:
private void treeView1_SelectionsChanged(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
items = new Opc.Da.Item[treeView1.SelectedNodes.Count];
foreach (TreeNode x in treeView1.SelectedNodes) {
items[treeView1.SelectedNodes.IndexOf(x)] = new Opc.Da.Item();
items[treeView1.SelectedNodes.IndexOf(x)].ItemName = x.Text;
}
group.AddItems(items);
group.Read(group.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback), out req);
}
в отладке я вижу, что dataGridVIew1.Rows.Count = 0, но по форме сетка не становится ясной. какой смысл? для каждого выбора в дереве я хочу видеть новые строки в таблице.
Я уверен, вам просто нужно обновить datagrid. Попробуйте следующее:
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
Если это работает... вы можете захотеть переосмыслить эту часть своего приложения.
Если я правильно помню, я установил для свойства DataSource значение null, чтобы очистить DataGridView:
datagridview.DataSource = null;
Чтобы очистить datagridview
, напишите следующий код:
dataGridView1.DataSource=null;
В основном ниже строки кода полезно только в сценариях привязки данных
datagridview.DataSource = null;
в противном случае используется ниже, если связь данных и datagridview не заполняется вручную
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
Итак, сначала проверьте, что вы делаете.
Если вы хотите очистить dataGridView, не привязанный к DataSource, но загруженный вручную, вы можете использовать этот простой код:
datagridview.Rows.Clear();
datagridview.Columns.Clear();
все, что вам нужно сделать, - очистить свой datatable, прежде чем вы его заполняете... а затем просто установите его как dgv datasource
У меня есть эта часть кода, я надеюсь, что это может помочь.
int numRows = dgbDatos.Rows.Count;
for (int i = 0; i < numRows; i++)
{
try
{
int max = dgbDatos.Rows.Count - 1;
dgbDatos.Rows.Remove(dgbDatos.Rows[max]);
}
catch (Exception exe)
{
MessageBox.Show("You can´t delete A row " + exe, "WTF",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
попробуйте установить RowCount в 0 (allowuserstorows должно быть ложным), а также вызов clear
попробовать:
datagrid.DataSource = null;
datagrid.DataBind();
В основном вам нужно очистить источник данных, привязанный к сетке.
dataGridView1.DataSource=null;
Задайте для свойства datasource пустую строку, затем вызовите метод Clear.
Это один из способов сделать это:
datagridview.DataSource = null;
datagridview.Refresh();
Я надеюсь, что это сработает для вас, потому что оно работает для меня.
Просто, если вы пытаетесь пересоздать свой вид сетки данных, просто введите код:
DataGridView1.DataSource = DataSet.Tables["TableName"];
ИЛИ
DataGridView.DataSource = DataTable;
else, если вы попытаетесь очистить свой вид сетки данных, просто введите код:
DataGridView.DataSource = null;
DataGridView.Rows.Clear();
DataGridView.Refresh();
и добавьте любой метод или событие, чтобы связать вид сетки данных снова под этой строкой кода....
Попробуйте этот код
private void button_Click(object sender, EventArgs e) {
if (this.dgInv.DataSource != null) {
this.dgInv.DataSource = null;
} else {
this.dgInv.Rows.Clear();
}
}
Попробуйте этот метод
dataGridView1.DataSource = dt;
dt.Rows.Clear();
Попробуй это
DataGridView1.DataSource=ds;
ds.Clear();
Если ваш DataGridView
не имеет никакого DataSource
решение не приходит, манипулируя его.
У вас всегда будет empty
строка, если для свойства AllowUserToAddRows
установлено значение true
.
Установите AllowUserToAddRows = false
если вам не нужно разрешать это.
Мне не нравится возиться с DataSource лично, поэтому, обсудив проблему с другом ИТ, я смог обнаружить этот способ, который прост и не влияет на DataSource. Надеюсь, это поможет!
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
cell.Value = "";
}
}