PDA

View Full Version : استخراج اطلاعات توسط LINQ و قراردادن آنها در TextBox ها



hirkania_ilp
سه شنبه 07 اردیبهشت 1389, 13:52 عصر
با سلام
من دارم با linq کار می کنم.حالا یه مشکلی دارم.برای ویرایش اطلاعات من id ردیف جاری رو از grid می گیرم بعد در صفحه مربوط به ویرایش اطلاعات رو نمایش می دم.
حالا مشکل اینجاست که نمی دونم چطور باید اطلاعات رو گرفته و textbox هام رو پر کنم.من دارم 3 لایه برنامه می نویسم.برای همین در data layer باید اطلاعات select شوند(با شرط خاص id ) و سپس کل اطلاعات رو بر گردونه و من بتونم به نحوی اون ها رو جدا کرده به textbox هام تخصیص بدم.
برای گرفتن اطلاعاتم از کد های زیر استفاده کردم :




public List<NewsGrp> GetNewsGroupView(int NewsGrpID)
{
return (from e in newsGrpData.GetTable<NewsGrp>()
where (e.NewsGrpID == NewsGrpID)
select e).ToList<NewsGrp>();
}



البته اینم بگم اگر راهی برای برگردوندن table با داشتن شرط id هم اگر کسی می دونه لطفا راهنماییم کنه.من نیاز فوری به این کد ها دارم.

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 14:00 عصر
طبق کدی که نوشتید شما یه لیست ژنریک از نوع NewGrp دارید. مشکل کجاست؟ منظورتون اینه چطور به مقدارهای داخل این لیست دسترسی داشته باشید؟

hirkania_ilp
سه شنبه 07 اردیبهشت 1389, 14:07 عصر
از جوابتون ممنون
مشکلم اینجاست که در موقعی که می خوام وارد صفحه ویرایش بشم و اطلاعات رو به صورت list دارم.حالا نمی دونم چطور باید اطلاعات رو جدا جدا گرفته داخل مثلا textbox بریزم.
اگر امکان داره نحوه نوشتن کدش رو بگید ممنون می شم چون در linq خیلی مبتدیم!
بازم ممنون

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 14:21 عصر
از


.FirstOrDefault()
or
.Single()

استفاده کنید. (در انتهای query)

hirkania_ilp
سه شنبه 07 اردیبهشت 1389, 14:28 عصر
من درست نفهمیدم یعنی چی؟؟
آخه من با استفاده از اون تابع که در بالا نوشتم اطلاعات رو دریافت می کنم.حالا از این ازلاعات گرفته شده می خوام فیلد نام رو مثلا بریزم تو txtname و ... حالا نفهمیدم منظورتون چیه!ببخشید اما می شه بیشتر توضیح بدید که چطور به اعضای این لیست در یافتیم دسترسی داشته باشم.
ممنونم

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 14:44 عصر
کدی که شما نوشتید به شما یک لیست ژنریک می ده. برای دسترسی به object های داخل اون می تونید به این شکل عمل کنید:


MyList[i].Property1اگه select شما فقط یک مقدار برمی گردونه، لازم نیست از ToList استفاده کنید. می تونید همون مقدار رو که از نوع NewsGrp هست داشته باشید:


(select ....).Single()کد بالا به شما یه NewsGrp بر می گردونه.

hirkania_ilp
سه شنبه 07 اردیبهشت 1389, 15:05 عصر
من منظورتون رو فهمیدم اما مشکلم حل نشده
توی page_load صفحه ویرایشم که می خوام تابعم رو فراخوانی کنم مشکل دارم!نمی دونم .



protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
string NewsId = Session["NewsGrpID"].ToString();
//--- inja bayad tabe ba parametre newsId farakhoni shode va
//----maghadire textboxham az natije meghdar begire
}
}


اگر بشه بگید چطور می تونم این فراخوانی رو صحیح انجام بدم و ازش استقاده کنم ممنون می شم آخه تو هر نوعی که می خوام بریزم اشکال می گیره!
واقعا ازتون ممنونم که دارین کمکم می کنید.

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 15:19 عصر
یه چیزی شبیه به این (با فرض اینکه تابع GetNewsGroupView یه NewsGrp بر می گردونه):



NewsGrp newsGrp=YourDALorYourBLL Class.GetNewsGroupView(NewsId);
TextBox1.Text=NewsGrp.Property1;


کد کلاس NewsGrp رو بذارید.

hirkania_ilp
سه شنبه 07 اردیبهشت 1389, 15:32 عصر
چون من دارم 3 لایه برنامه می نویسم تو لایه data تابع زیر رو دارم :




public List<NewsGrp> GetNewsGroupView(int NewsGrpID)
{
return (from e in newsGrpData.GetTable<NewsGrp>()
where (e.NewsGrpID == NewsGrpID)
select e).ToList<NewsGrp>();
}



بعد تو لایه bussinessam این تابع رو دارم :




public List<NewsGrp> GetNewsGroupView(int NewsGrpID)
{
return newsdata.GetNewsGroupView( NewsGrpID);
}




اسم کلاسی که توش توابع داده ای مربوط به این صفحه رو دارم می نویسم NewsGroupData.cs است و کلاس لایه bussiness به نام NewsGroupbs.cs . برای دسترسی هرکدوم به هم در لایه bussinuss از روش زیر استفاده کردم :




NewsGroupData newsdata = new NewsGroupData();



و در نهایت در صفحه وبرایشم از روش زیر برای دسترسی به لایه bussiness استفاده می کنم :




BussinessLayer.NewsGroupbs newsGrpBs = new BussinessLayer.NewsGroupbs();



و در page_load هم می خوام این توابع فراخوانی بشوند و بتونم اطلاعات رو داخل textbox ها بریزم.
لطفا راهنماییم کنید.بازم ممنونم