PDA

View Full Version : دسترسی به فیلدهای یک dataview



ایمان اختیاری
شنبه 21 فروردین 1389, 09:56 صبح
سلام ..
یه dataview داریم که شرط خاصی رو با روش rowfilter اعمال کردیم حالا می خوام ببینم چطوری می شه به فیلدهای این قسمت دسترسی داشت ...
سوال دوم اینکه می شه روی datatable هم یه چیزی مثله rowfilter اعمال کرد ؟

amirjalili
شنبه 21 فروردین 1389, 10:56 صبح
1: بعد از فیلتر فرقی نمیکنه. به همون شیوه معمول column ها رو میتونی بگیری.
http://stackoverflow.com/questions/387334/how-to-get-a-value-from-a-column-in-a-dataview

2: با DefaultView میتونید روی datatable فیلتر رو انجام بدید.
http://bytes.com/topic/c-sharp/answers/441188-help-datatable-rowfilter

ایمان اختیاری
شنبه 21 فروردین 1389, 11:19 صبح
مرسی از پاسختون ...
ولی بازم مشکل دارم
کد من اینجوریه

dv.Sort = "id";
dv.RowFilter = "id like '" + textBox1.Text + "*'";
// MessageBox.Show(dv.ToTable().Columns["id"].ToString());
MessageBox.Show(dv.Table.Rows[2]["account"].ToString());


ولی بدون توجه به فیلتر مقدار سطر 2 رو برمی گردونه

mehdi.mousavi
شنبه 21 فروردین 1389, 13:34 عصر
مرسی از پاسختون ...
ولی بازم مشکل دارم
کد من اینجوریه

dv.Sort = "id";
dv.RowFilter = "id like '" + textBox1.Text + "*'";
// MessageBox.Show(dv.ToTable().Columns["id"].ToString());
MessageBox.Show(dv.Table.Rows[2]["account"].ToString());


ولی بدون توجه به فیلتر مقدار سطر 2 رو برمی گردونه

سلام.
لطفا اینو امتحان کنید:

dv.RowFilter = "Convert(id, 'System.String') like '" + textBox1.Text + "*'";

اگر درست شد به من هم بگید، چون فقط حدس زدم که ID شما integer هستش، ولی شما دارید بصورت string ای توش جستجو میکنید و به این دلیل هستش که جواب نمیگیرید.

موفق باشید.

ایمان اختیاری
شنبه 21 فروردین 1389, 13:49 عصر
متاسفانه ID به صورت رشته تعریف شده ...
دیگه بدجور قاطی کردم .. آخه فیلتر رو هم نادیده می گیره ..

mehdi.mousavi
شنبه 21 فروردین 1389, 14:11 عصر
متاسفانه ID به صورت رشته تعریف شده ...
دیگه بدجور قاطی کردم .. آخه فیلتر رو هم نادیده می گیره ..

سلام.
متوجه شدم ایراد از کجاست. وقتی شما دارید به Table دسترسی پیدا می کنید، در واقع دارید به همون DataTable اصلی دسترسی پیدا میکنید. در صورتیکه یا باید از indexer روی DataView استفاده کنید، یا آیتمهاش رو Iterate کنید. بعبارت دیگه:

dv[0].Row["id"]

در واقع اونجاییکه MessageBox گذاشته اید، باید اینطوری به اعضای DataView دسترسی پیدا کنید.

موفق باشید.

ایمان اختیاری
شنبه 21 فروردین 1389, 14:34 عصر
متشکرم ...
درست شد
البته این صورت

si = dv[0].Row["account"].ToString();