#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