Строки Datagridview очищаются после выполнения процесса

#c# #winforms #datagridview

#c# #winforms #datagridview

Вопрос:

Я работаю с приложением для выставления счетов-фактур на c #, я хотел сбросить свой datagridview после сохранения и печати моего счета-фактуры, мне нужно подготовить мою форму для создания другого счета-фактуры без перезапуска формы. Я перепробовал все известные возможные способы сделать rowcount моего datagridview = 1, не смог сделать это с помощью

 dataGridView1.Rows.Clear();
dataGridView1.Refresh();
 

также я попытался с

 dataGridView1.Rows.Clear();
dataGridView1.Refresh();
dataGridView1.DataSource = null;
 

все эти методы очищают мои строки и ячейки, но когда я ввожу новую строку после очистки datagridview, она вводится в строку, оставшуюся от old ( dataGridView1.Rows[RowCount - 1] ), поэтому все остальные строки остаются пустыми и вводится новая строка как решить эту проблему?

ОТРЕДАКТИРОВАНО

Я добавляю строки, подобные этой

 dataGridView1.RowCount = RowCount   1;
string SQLStatement = "Select * from Stock_ManagerDB where STKItemCode='"   dataGridView1.Rows[RowCount - 1].Cells[1].Value   "'";
SqlDataReader myreader = DBConnection.viewDetails(SQLStatement);
if (myreader.Read())
{
    dataGridView1.Rows[RowCount - 1].Cells[2].Value = myreader["STKItemName"].ToString().Trim();
    dataGridView1.Rows[RowCount - 1].Cells[3].Value = 1;
    dataGridView1.Rows[RowCount - 1].Cells[4].Value = (string)myreader["STKCategory"].ToString().Trim();
    dataGridView1.Rows[RowCount - 1].Cells[5].Value = (string)myreader["SellingPrice"].ToString().Trim();
    dataGridView1.Rows[RowCount - 1].Cells[6].Value = labelDiscOperator.Text;
    label_avlQty.Text = (string)myreader["STKQTY"].ToString().Trim();
    dataGridView1.Rows[RowCount - 1].Cells[15].Value = (string)myreader["STKQTY"].ToString().Trim();
    btnloadDGDGT();
    btnstockupdate();
}
 

Комментарии:

1. Используете ли вы источник данных? Если нет, то явно dataGridView1.Rows.Clear(); должно сработать.

2. нет, я не привязан к данным, просто пользователь вводит элементы управления, это не работает для меня, что я удивляюсь.

3. Каково значение вашего RowCount в dataGridView1.RowCount = RowCount 1; ? вы сбросили значение, возможно, оно хранит ваше предыдущее значение? и почему бы вам не использовать dataGridView1.RowCount вместо RowCount, поскольку вы снова добавляете и вычитаете его?

Ответ №1:

попробуйте так,

 ((DataTable)dataGridView1.DataSource).Rows.Clear();  //if datasource is datatable
 

ещё

 ((DataSet)dataGridView1.DataSource).Tables[0].Rows.Clear(); //if datasource is dataset