PDA

View Full Version : سوال: اضافه كردن دكمه در گريد و محل نوشتن كد؟



m.developer
پنج شنبه 09 اردیبهشت 1389, 14:39 عصر
وقتي در گريد دكمه ميذارم در چه رويدادي ميشه كد مربوط به دكمه رو نوشت؟
من در cell click گريد اين كد رو نوشتم اما وقتي سطر هم انتخاب ميشه عمل ميكنه
اگه ممكنه راهنمايي كنين ممنون

private void DgvCnt_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (DgvCnt.Rows[DgvCnt.CurrentRow.Index].Cells[10].Selected)
{

Amir Oveisi
پنج شنبه 09 اردیبهشت 1389, 16:46 عصر
دقت داشته باشيد كه ديتاگريدويو رويداد خاصي براي اين كار نداره و بايد از متد CellContentClicked استفاده كنيد. با تشخيص اينكه روي چه cell اي كليك شده چك مي كنين ببينين حالا اين Cell توش button هست يا نه و اگر بود، كد مورد نظرتون رو در اونجا مي نويسين. مثال زير رو ببينيد:

private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

if (IsANonHeaderLinkCell(e))
{
MoveToLinked(e);
}
else if (IsANonHeaderButtonCell(e))
{
PopulateSales(e);
}
}

private void MoveToLinked(DataGridViewCellEventArgs e)
{
string employeeId;
object value = DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (value is DBNull) { return; }

employeeId = value.ToString();
DataGridViewCell boss = RetrieveSuperiorsLastNameCell(employeeId);
if (boss != null)
{
DataGridView1.CurrentCell = boss;
}
}

private bool IsANonHeaderLinkCell(DataGridViewCellEventArgs cellEvent)
{
if (DataGridView1.Columns[cellEvent.ColumnIndex] is
DataGridViewLinkColumn &&
cellEvent.RowIndex != -1)
{ return true; }
else { return false; }
}

private bool IsANonHeaderButtonCell(DataGridViewCellEventArgs cellEvent)
{
if (DataGridView1.Columns[cellEvent.ColumnIndex] is
DataGridViewButtonColumn &&
cellEvent.RowIndex != -1)
{ return true; }
else { return (false); }
}

private DataGridViewCell RetrieveSuperiorsLastNameCell(string employeeId)
{

foreach (DataGridViewRow row in DataGridView1.Rows)
{
if (row.IsNewRow) { return null; }
if (row.Cells[ColumnName.EmployeeId.ToString()].Value.ToString().Equals(employeeId))
{
return row.Cells[ColumnName.LastName.ToString()];
}
}
return null;
}

منبع سورس‌:‌ MSDN (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellcontentclick .aspx)

m.developer
پنج شنبه 09 اردیبهشت 1389, 19:53 عصر
ممنون از جوابتون اما اگه چند تا دكمه در گريد داشته باشيم
چطور ميشه اينكار رو انجام داد؟

m.developer
پنج شنبه 09 اردیبهشت 1389, 20:45 عصر
اين مشكلم حل شد
ممنون از راهنمايي شما
اما ازون جايي كه ممكنه دوست ديگه اي با اين مساله مواجه شده باشه واسه زماني كه چند تا ستون دكمه در گريد داريم من يه نمونه ميذارم
موفق باشيد

48150