Некоторые столбцы моего DataGridView загружаются из базы данных. Кроме того, я добавил несколько столбцов в этот DataGridView вручную. Я хочу увеличить значение для каждой ячейки в первом столбце с именем "S_No".
Надеюсь, код изменит мою проблему:
private void bindgrid()
{
dataGridView1.ColumnCount = 12;
ConnectionStringSettings consettings = ConfigurationManager.ConnectionStrings["attendancemanagement"];
string connectionString = consettings.ConnectionString;
SqlConnection cn = new SqlConnection(connectionString);
cn.Open();
string dtp = dateTimePicker3grd.Value.ToString("dd/MM/yyyy");
string query = "select s_no,Employee_id,Employee_name from Employee_Details where employee_id not in (select employee_id from dailyattendance where date = '" + dtp + "') order by S_No ";
SqlCommand cmd = new SqlCommand(query, cn);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
dataGridView1.Columns[0].Name = "S_No";
dataGridView1.Columns[0].HeaderText = "S_No";//*Here I Want to increment cell value by 1 for every cell..and the first cell of the column should be the last serial value of database*
dataGridView1.Columns[1].HeaderText = "Employee_id";
dataGridView1.Columns[1].Name = "Employee_Id";
dataGridView1.Columns[1].DataPropertyName = "Employee_id";
dataGridView1.Columns[2].Name = "Employee_name";
dataGridView1.Columns[2].HeaderText = "Employee_Name";
dataGridView1.Columns[2].DataPropertyName = "Employee_name";
dataGridView1.Columns[3].Name = "In_time";
dataGridView1.Columns[3].HeaderText = "In_time";
dataGridView1.Columns[4].Name = "Out_time";
dataGridView1.Columns[4].HeaderText = "Out_time";
dataGridView1.Columns[5].Name = "Date";
dataGridView1.Columns[5].HeaderText = "Date";
dataGridView1.Columns[6].Name = "Week_no_of_the_Month";
dataGridView1.Columns[6].HeaderText = "Week_no_of_the_Month";
dataGridView1.Columns[7].HeaderText = "Attendance";
dataGridView1.Columns[7].Name = "Attendance";
dataGridView1.Columns[8].HeaderText = "Image_of_the_Employee";
dataGridView1.Columns[8].Name = "Image_of_the_Employee";
dataGridView1.Columns[9].Name = "Image_path";
dataGridView1.Columns[9].HeaderText = "Image_path";
dataGridView1.Columns[10].Name = "Work_status";
dataGridView1.Columns[10].HeaderText = "Work_status";
dataGridView1.Columns[11].Name = "Remarks";
dataGridView1.Columns[11].HeaderText = "Remarks";
dataGridView1.DataSource = dt;
}
}
}
В вашем коде После строки sda.Fill(dt);
добавьте следующие строки кода. Пожалуйста, проверьте, работает ли это для вас. Позже вы можете добавить проверку исключений, получили ли вы записи из запроса или нет.
int maxSlNo = int.Parse(dt.Rows[dt.Rows.Count - 1]["s_no"].ToString());
maxSlNo++;
foreach (DataRow dtRow in dt.Rows)
{
dtRow["s_no"] = maxSlNo;
maxSlNo++;
}
dt.AcceptChanges();
Кроме того, добавьте следующую строку:
dataGridView1.Columns[0].DataPropertyName = "s_no";
DataTable
не вDataGridView
. Если вы сконфигурируете его в базе данных,DataTable
автоматически примет те же свойства, хотя вам, возможно, придется установить свойствоMissingSchemaAction
вашего адаптера данных наAddWithKey
. Идентифицировал ли этот столбец для идентификации в SQL Server? Если нет, то, вероятно, так и должно быть, потому что именно так вы автоматически увеличиваете идентификаторы.DataTable
и адаптер данных, чтобы впоследствии сохранить данные.