PDA

View Full Version : سوال: معادل ایونت TextChanged برای سلولهای گرید



bita_naz
شنبه 29 فروردین 1388, 20:35 عصر
سلام

معادل ایونت TextChanged تکست باکس برای سلولهای گرید چیست ؟

مرسی:لبخندساده:

hsmfaridmehr
شنبه 29 فروردین 1388, 21:15 عصر
از ایونت CellBeginEdit دیتاگرید استفاده کن
و از طریق کد زیر به سلول تغییر یافته برس


dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]

bita_naz
یک شنبه 30 فروردین 1388, 12:26 عصر
از ایونت CellBeginEdit دیتاگرید استفاده کن
و از طریق کد زیر به سلول تغییر یافته برس


dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]


این ایونت رو امتحان کرده بودم ولی مشکش اینه که متن درون سلول را با هر بار اجرا نمیشه ازش گرفت .

لطفا راهنمایی بفرمایید .

مرسی

hsmfaridmehr
یک شنبه 30 فروردین 1388, 13:35 عصر
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

bita_naz
یک شنبه 30 فروردین 1388, 15:20 عصر
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;


اینو هم قبلا امتحان رده بودم . مقدار درون سلول رو فقط زمانی میشه گرفت که سلول EndEdit بشود. ولی هنگام نوشتن در سلول مقدار رو نمیده.

esmaeily-hosein
یک شنبه 30 فروردین 1388, 15:27 عصر
تو beginedit هی endedit کن.

hsmfaridmehr
یک شنبه 30 فروردین 1388, 15:57 عصر
خوب چون datagrid شما bind شده به ی جدول درسته؟

و چون اون cell هم به همون cell در جدول اصلی bind شده مقداری رو بر میگردونه که در جدول ذخیره شده.

حالا واسه چی می خوای اون رو؟

bita_naz
یک شنبه 30 فروردین 1388, 16:10 عصر
خوب چون datagrid شما bind شده به ی جدول درسته؟

و چون اون cell هم به همون cell در جدول اصلی bind شده مقداری رو بر میگردونه که در جدول ذخیره شده.

حالا واسه چی می خوای اون رو؟

برای هر دو حالت بایند و غیر بایند تست کردم مثل هم هست .

من می خام برای هر مقدار جدید که وارد می شه یه کوئری اجرا بشه که پارامتر اون کوئری هم مقدار درون سلول هست. دارم واسه یکی از ستونهای گرید یه چیزی شبیه AutoComplete می سازم .

hsmfaridmehr
یک شنبه 30 فروردین 1388, 16:49 عصر
از ایونت CellValueChanged استفاده کن



private void dataGridView1_CellValueChanged_1(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}
}

mostafaaa
یک شنبه 30 فروردین 1388, 17:38 عصر
سلام دوست من
اگه دقیقا میخوای ایونت TextChanged رو داشته باشی، در واقع باید به کنترلی که وظیفه ادیت کردن سلول ها رو داره دسترسی پیدا کنی و کدهات رو در ایونت TextChanged اون بنویسی !!
کدت میتونه یه چیزی شبیه به این باشه :

private bool HandlerAdded = false;
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (HandlerAdded == false)
{
e.Control.TextChanged += ECTextChanged;
HandlerAdded = true;
}

}
private void ECTextChanged(object sender, EventArgs e)
{
MessageBox.Show(((Control )sender ).Text );
}
یا علی

bita_naz
دوشنبه 31 فروردین 1388, 19:26 عصر
سلام دوست من
اگه دقیقا میخوای ایونت TextChanged رو داشته باشی، در واقع باید به کنترلی که وظیفه ادیت کردن سلول ها رو داره دسترسی پیدا کنی و کدهات رو در ایونت TextChanged اون بنویسی !!
کدت میتونه یه چیزی شبیه به این باشه :

private bool HandlerAdded = false;
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (HandlerAdded == false)
{
e.Control.TextChanged += ECTextChanged;
HandlerAdded = true;
}

}
private void ECTextChanged(object sender, EventArgs e)
{
MessageBox.Show(((Control )sender ).Text );
}یا علی

بسیار ممنون . جواب همین است .

لطفا در مورد HandlerAdded توضیح بیشتر بدید . کلا در مورد کل کد .

مرسی:لبخندساده: