Rows cannot be programmatically added to the DataGridView's rows collection when the control is data
سلام
من داخل رویداد لود فرمم 2تا تابع نوشتم:
private void frmControlProzhe_Load(object sender, EventArgs e)
{
getControlProzhe();
SortDatagridview();
}
دقیقاً همونارو داخل رویداد اکتیو فرمم نوشتم:
private void frmControlProzhe_Activated(object sender, EventArgs e)
{
getControlProzhe();
SortDatagridview();
}
تابع های بالا به شرح زیر هستند:
private void getControlProzhe()
{
try
{
SqlConnection objconnection =
new SqlConnection(clsForms.ConnectionString);
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataSet = new DataSet();
int i = 0;
objDataAdapter.SelectCommand.CommandText = @"SELECT tblLetterSadere.ID,tblLetterSadere.LetterID,sender UserName
,Subject,tabaghe,jahat,SendDate,Sendtime,
bazgasht,peyrov
FROM tblLetterSadere WHERE tblLetterSadere.IsFonosht = 1 AND tblLetterSadere.ControlProzheFinish = 0";
objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblLetter3");
objconnection.Close();
foreach (DataRow r in objDataSet.Tables["tblLetter3"].Rows)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells["ID"].Value = r["ID"].ToString();
dataGridView1.Rows[i].Cells["LetterID"].Value = r["LetterID"].ToString();
if (dataGridView1.Rows[i].Cells["LetterID"].Value.ToString() == "")
dataGridView1.Rows[i].Cells["LetterID"].Value = "هنوز توسط دبیرخانه شماره نشده است";
dataGridView1.Rows[i].Cells["Sender"].Value = Program.chk.GetFullName(r["senderUserName"].ToString());
dataGridView1.Rows[i].Cells["Subject"].Value = r["Subject"].ToString();
dataGridView1.Rows[i].Cells["type"].Value = r["tabaghe"].ToString();
dataGridView1.Rows[i].Cells["jahat"].Value = r["jahat"].ToString();
dataGridView1.Rows[i].Cells["senddate"].Value = r["SendDate"].ToString();
dataGridView1.Rows[i].Cells["sendtime"].Value = r["Sendtime"].ToString();
dataGridView1.Rows[i].Cells["bazgasht"].Value = r["bazgasht"].ToString();
dataGridView1.Rows[i].Cells["peyrov"].Value = r["peyrov"].ToString();
dataGridView1.Rows[i].Cells["varede"].Value = "نامه صادره از شرکت";
i++;
}
}
catch (Exception)
{
//MessageBox.Show("در ارتباط با بانک اطلاعاتی مشکلی پیش آمده است", "خطا درون بانک اطلاعاتی",
// MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
و اینم اون یکی تابع
private void SortDatagridview()
{
clsForms fo = new clsForms();
DataTable dttest = new DataTable();
dttest = fo.DataGridView2DataTable(dataGridView1, "ali", 0);
//dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
DataView view = dttest.DefaultView;
view.Sort = "senddate DESC, sendtime DESC";
dataGridView1.DataSource = view;
dataGridView1.Columns["ID"].Visible = false;
dataGridView1.Columns["LetterID"].HeaderText = "شماره نامه";
dataGridView1.Columns["LetterID"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["Sender"].HeaderText = "فرستنده";
dataGridView1.Columns["Sender"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["Subject"].HeaderText = "موضوع";
dataGridView1.Columns["Subject"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["type"].HeaderText = "نوع";
dataGridView1.Columns["type"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["jahat"].HeaderText = "جهت";
dataGridView1.Columns["jahat"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["mohlat"].Visible = false;
dataGridView1.Columns["senddate"].HeaderText = "تاریخ ارجاع";
dataGridView1.Columns["senddate"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["sendtime"].HeaderText = "ساعت ارجاع";
dataGridView1.Columns["sendtime"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["bazgasht"].HeaderText = "بازگشت";
dataGridView1.Columns["bazgasht"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["peyrov"].HeaderText = "پیرو";
dataGridView1.Columns["peyrov"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns["IsRead"].Visible = false;
dataGridView1.Columns["varede"].HeaderText = "وارده-داخلی-صادره";
dataGridView1.Columns["varede"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
حالا وقتی به رویداد اکتیو فرم می رسه اروره زیر رو در تابع getControlProzhe به من نشون می ده:
Rows cannot be programmatically added to the DataGridView's rows collection when the control is data
نقل قول: Rows cannot be programmatically added to the DataGridView's rows collection when the contro
سلام.
در متود دوم با:
dataGridView1.DataSource = view;
DataView به گرید متصل شده و در این حالت شما نمی تونید مستقیما یک Row به dataGrid اضافه کنید.
نقل قول: Rows cannot be programmatically added to the DataGridView's rows collection when the contro
با همین کدها چطور می تونم مستقیماً یک سطر به دیتاگرید اضافه کنم.
یعنی نمی خوام بریزم توی دیتاتیبل و بعد یه سطر بهش اضافه کنم و دوباره بدم به دیتاگرید.