PDA

View Full Version : سوال: وارد کردن سطرهایی جدید به دیتاگریدویو



Ebrahim_Rayaneh
جمعه 04 اسفند 1391, 23:20 عصر
با سلام
3 تا تکست باکس داریم که با وارد کردن مقادیر به آنها و کلیک یه باتن(button) آن مقادیر به صورت یه سطر جدید به دیتاگریدویو اضافه میشوند اما من وقتی این باتن رو کلیک میکنم به جای اینکه سطر جدید بعد از سطر قدیمی قرار بگیرد قبل از آن قرار میگیرد
private void btnInserList_Click(object sender, EventArgs e)
{

//تعیین آخرین مقدار ستون ردیف
int iRadif=1;
if (dgvComodity.Rows.Count > 0)
{
if (dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["radif"].Value != null)
{
iRadif = (int)dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["radif"].Value;
}
}

//ورود اطلاعات تکست باکس ها به دیتاگریدویو
if (dgvComodity.Rows.Count > 0)
{

dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["radif"].Value = iRadif;
dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["name"].Value = txtCommodityName.Text.Trim();
dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["num"].Value = txtNum.Text.Trim();
dgvComodity.Rows[dgvComodity.Rows.Count - 1].Cells["price"].Value = txtPrice.Text.Trim();


DataGridViewRow nRow = (DataGridViewRow)dgvComodity.Rows[0].Clone();
dgvComodity.Rows.Insert(dgvComodity.Rows.Count-1, nRow);
}
else
{
MessageBox.Show("error!");
return;
}
}



در ضمن میخواهم وقتی فرم لود میشود هیچ سطری در دیتاگریدویو مشاهده نگردد و فقط هدرها مشخص باشند،البته این دیتاگریدویو به صورت آنباوند (unbound) میباشد.

private void frmCommodity_Load(object sender, EventArgs e)
{
dgvComodity.Columns.Add("radif", "ردیف");
dgvComodity.Columns.Add("name", "نام کالا");
dgvComodity.Columns.Add("num", "تعداد");
dgvComodity.Columns.Add("price", "قیمت");
dgvComodity.Columns["radif"].Width = 200;
}

اگه مشکل کد فوق را بگویید ممنونتان میشوم.

veniz2008
جمعه 04 اسفند 1391, 23:38 عصر
سلام.
واسه اینکه هیچ سطری در گرید در لحظه اولیه نباشه گزینه enable Adding رو غیر فعال کنید(روی مثلث کوچیک در گوشه گرید کلیک و گزینه گفته شده رو غیر فعال کنید).
در مورد اضافه شدن مقدار جدید: داخل دکمه اول سطرهای گرید رو بشمارید و درون یک متغیر مثلا number نگه دارید (در مرتبه اول که سطری وجود نداره 0 هست). بعد از این کار یه سطر به گرید اضافه کنید ( ;() dgvComodity.Rows.Add ). حالا مقادیر رو بصورت زیر اضافه کنید:

dgvComodity.Rows[number].Cells["name"].Value = txtCommodityName.Text.Trim();
dgvComodity.Rows[number].Cells["num"].Value = txtNum.Text.Trim();
dgvComodity.Rows[number].Cells["price"].Value = txtPrice.Text.Trim();