PDA

View Full Version : انتخاب یک ستون از dataGridView



aligh662000
چهارشنبه 16 اسفند 1385, 15:58 عصر
سلام!
من میخوام محتویات یک ستون از dataGridView که به وسیله دیتا بیس پر میشه رو عوض کنم!
به عنوان مثال اگر محتویات یک فیلد از دیتا بیسم تاریخ تولد باشه من میخوام سن رو نشون بده!
یعنی اطلاعات مربوط رو از دیتا بیس بگیره فیلدها رو نشون بده در dataGridView (که اینکارهاشو کردم) فقط یک فیلد رو بگیره روش عملیاتی آنجام بده و نتیجه رو نشون بده در dataGridView
مرسی!

aligh662000
چهارشنبه 16 اسفند 1385, 16:17 عصر
چندتا نکته!
مشابه این سوال قبلآ پرسیده شده بود اما من جواب نگرفتم ازش!
با ۲۰۰۵ دارم کار میکنم!
محیط برنامه نویس هم وب نیست

sm_ezadpanah
چهارشنبه 16 اسفند 1385, 17:44 عصر
شما میتونی یه تابع برای سرچ روی دیتا بیس بنویسی که اول چک کنه فیلد انتخابی از گرید چی بوده و بعد بر اساس اون سرچ کنه

hdv212
چهارشنبه 16 اسفند 1385, 18:49 عصر
فکر نمیکنم شما بتونی مقدار یک فیلد رو در دیتاگرید عوض کنی چون اون به دیتابیست bind شده .. مگه اینکه یه ستون جدید خودت بسازی و توی اون بتونی عملیاتتو انجام و نشون بدی ..

Alireza_Salehi
چهارشنبه 16 اسفند 1385, 21:38 عصر
DataGridView1.Columns("نام ستون در دیتاگریدویو").DataPropertyName = "نام فیلد در دیتابیس"
DataGridView1.Refresh()

به همین سادگی!

aligh662000
یک شنبه 20 اسفند 1385, 09:34 صبح
فکر کنم سوالم رو درست مطرح نکردم!
دیتا گرید من به دیتا بیس وصل است!
یکسری از فیلدها رو عینآ میخواهم نشون بدم!
یک فیلد هم دارم که به صورت کد گذاری شده در دیتا بیس ذخیره شده!
میخوام اون رو دیکد شده نشون بدم تو دیتا گریدم راهی داره یا نه؟
با تشکر از تمام دوستانی که جواب دادن اما یا اشکال از سوال من بوده یا دقیقآ متوجه جواب شما نشدم!

aligh662000
یک شنبه 20 اسفند 1385, 10:53 صبح
دیتا گرید رو هم این طوری پر میکنم



dataGridView1.DataSource = null;

System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
DataSet ds = new DataSet();

ds = new DataSet();
cmd.CommandText =my query;

cmd.Connection= my conection;
System.Data.OleDb.OleDbDataAdapter adapt = new System.Data.OleDb.OleDbDataAdapter(cmd);

adapt.Fill(ds);

dataGridView1.DataSource = ds.Tables[0] ;
}

Alireza_Salehi
یک شنبه 20 اسفند 1385, 13:00 عصر
یک ستون جدید به Table موجود در دیتاست اضافه کنید و در یک حلقه مقدار دیکد شده رو محاسبه کرده و به این ستون اضافه کنید.
بعد هم یک ستون به دیتاگرید اضافه کنید و به این ستون جدید متصل کنید.

__H2__
یک شنبه 20 اسفند 1385, 13:33 عصر
سلام!
من میخوام محتویات یک ستون از dataGridView که به وسیله دیتا بیس پر میشه رو عوض کنم!
به عنوان مثال اگر محتویات یک فیلد از دیتا بیسم تاریخ تولد باشه من میخوام سن رو نشون بده!
یعنی اطلاعات مربوط رو از دیتا بیس بگیره فیلدها رو نشون بده در dataGridView (که اینکارهاشو کردم) فقط یک فیلد رو بگیره روش عملیاتی آنجام بده و نتیجه رو نشون بده در dataGridView
مرسی!

سلام
شما 100% میتوانید همچین کاری انجام دهید. (خیلی راحت است دو تابع مخصوص این کار وجود دارد که یکی اطلاعات راقبل از ارسال به شما میدهد و دیگری بعد از دریافت و قبل از ریختن در DataSet) ولی الان وقت توضیح ندارم. در روزهای آینده حتماَ متنی آماده میکنم.

__H2__
دوشنبه 21 اسفند 1385, 13:57 عصر
سلام
نگاهی انداختم، متاسفانه برای TextBox و ComboBox دو تابع معمولی داریم ولی برای DataGridView این دو تابع در یکی از کلاسسهای انتزاعی پیاده سازی شده که باید از دو کلاسس مختلف وراثت بگیرید تا بتوانید آن دو تابع را اعمال کنید.
اصلاَ دلم نمیخواهد این تاپیک را به کلاس درس وراثت و پولی مورفیزم تبدیل کنم!
سن را چگونه میخواهید نشان دهید؟ تعداد روزها؟ یا....؟
بگویید، اگر ساده باشد، شاید کل کدی را که خواسته اید برایتان بنویسم!
(خیلی سریعتر از آموزش است!!!!!!!!!!!!)

aligh662000
سه شنبه 22 اسفند 1385, 09:26 صبح
سلام
نگاهی انداختم، متاسفانه برای TextBox و ComboBox دو تابع معمولی داریم ولی برای DataGridView این دو تابع در یکی از کلاسسهای انتزاعی پیاده سازی شده که باید از دو کلاسس مختلف وراثت بگیرید تا بتوانید آن دو تابع را اعمال کنید.
اصلاَ دلم نمیخواهد این تاپیک را به کلاس درس وراثت و پولی مورفیزم تبدیل کنم!
سن را چگونه میخواهید نشان دهید؟ تعداد روزها؟ یا....؟
بگویید، اگر ساده باشد، شاید کل کدی را که خواسته اید برایتان بنویسم!
(خیلی سریعتر از آموزش است!!!!!!!!!!!!)

در واقع سن یک مثال بود تا موضوع جا بیفته!
اصل مسئله من اینه که!
من یک سری دیتا دارم اونها رو به صورت کد شده تو دیتا بیس نگهداری میکنم!
حالا وقتی میخوام نشونشون بدم به همون صورت کدگذاری شده تو دیتاگرید نشونشون میده!
در حالیکه من میخوام دی کد شده نشون بده تا کاربر بفهمه چی هست!

aligh662000
سه شنبه 22 اسفند 1385, 09:28 صبح
یک ستون جدید به Table موجود در دیتاست اضافه کنید و در یک حلقه مقدار دیکد شده رو محاسبه کرده و به این ستون اضافه کنید.
بعد هم یک ستون به دیتاگرید اضافه کنید و به این ستون جدید متصل کنید.

به این کار فکر میکنم البته فکر میکنم که هزینه های بلاسری زیادی داشته باشه!
ضمن اینکه اگر میخواستم به صورت دیکد شده دیتا هام رو داشته باشم که دیگه لزومی نداشت کدگذاریش بکنم :متفکر:

amir.NET2
سه شنبه 22 اسفند 1385, 09:57 صبح
کاری که دوستمون گفت خوبه

ولی

من خودم همیشه اینجور مواقع لیست رو با دیتا ریدر پر می کنم

دوستان توجه کنید دیتا ست خودش توسط دیتا ریدر پر میشه

پس در اینجور مواقع بجای استفاده از دیتا ست ( و دیتا ریدر )

بهتره که مستقیم از دیتا ریدر استفاده بشه

در ضمن سرعت دیتا ریدر خیلی خیلی از دیتا ست بالاتره

aligh662000
سه شنبه 22 اسفند 1385, 10:08 صبح
کاری که دوستمون گفت خوبه

ولی

من خودم همیشه اینجور مواقع لیست رو با دیتا ریدر پر می کنم

دوستان توجه کنید دیتا ست خودش توسط دیتا ریدر پر میشه

پس در اینجور مواقع بجای استفاده از دیتا ست ( و دیتا ریدر )

بهتره که مستقیم از دیتا ریدر استفاده بشه

در ضمن سرعت دیتا ریدر خیلی خیلی از دیتا ست بالاتره

ممکنه یکم بیشتر توضیح بدی مرسی! :متفکر:
کدام صفحه قبل هست چه تغییری باید روش بدم!
تاحالا با دیتا ریدر کار نکردم!
ضمن اینکه مطلب اصلی اینه که میتونم هنگام نمایش در دیتاگرید دیکد شده داده ها رو داشته باشم یا نه؟!

amir.NET2
سه شنبه 22 اسفند 1385, 10:45 صبح
تاحالا با دیتا ریدر کار نکردم!

این هم یه مثال


System.Data.SqlClient.SqlDataReader dr;
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand();
System.Data.SqlClient.SqlConnection con =
new System.Data.SqlClient.SqlConnection("YOUR CONNECION STRING");
string Str = "YOUR SELECT STRING";
con.Open();
com.Connection = con;
com.CommandText = Str;
dr = com.ExecuteReader();
while (dr.Read())
{
DataGridView1.Rows.Add();
int index = DataGridView1.Rows.Count - 1;
DataGridView1.Rows[index].Cells[0] = dr.GetValue(0).ToString();// در این خط شما می تونی دیتا رو تغییر بدی
.
.
.
DataGridView1.Rows[index].Cells[n] = dr.GetValue(n).ToString();// در این خط شما می تونی دیتا رو تغییر بدی
}
con.Close();



ضمن اینکه مطلب اصلی اینه که میتونم هنگام نمایش در دیتاگرید دیکد شده داده ها رو داشته باشم یا نه؟!

بله دوست من می تونی داشته باشی

شما می تونی یه ستون پنهان داشته باشی و رمز شده ها رو اونجا داشته باشی

__H2__
چهارشنبه 23 اسفند 1385, 16:34 عصر
سلام
جوابم را تکمیل میکنم.

برای حالت کلی باید یک وراثت از System.Windows.Forms.DataGridViewCell بگیرید و دو تابع ParseFormattedValue و GetFormattedValue را در آن مجدداَ تعریف کنید (Overrides) سپس یک وراثت دیگر از کلاسس System.Windows.Forms.DataGridViewTextBoxColumn بگیرید و تابع CellTemplate را به کلاسس قبلی ارجاع دهید. سپس در DataGridView از این ستون جدید استفاده کنید.

amir.NET2
چهارشنبه 23 اسفند 1385, 17:11 عصر
فکر کنم استفاده از data reader سریع تر و راحت باشه