PDA

View Full Version : مشکل با نشان دادن اطلاعات



jaykob
دوشنبه 27 دی 1389, 18:57 عصر
سلام

من id رکوردی از دیتابیسم رو از QueryString می گیرم و یعد توسط LINQ مقدار اون خبر رو Select می کنم . اما می خواستم ببینم با چه کنترلی نشونش بدم برای اخبار با توجه به اینکه با ckeditor پر شده و امکان وجود عکس و ... هست و اینکه چجوری در کنترل مربوطه نشونش بدم ؟



string myQuery = string.Empty;
if (!string.IsNullOrEmpty(Request.QueryString["id"]))
{
myQuery = Request.QueryString["id"];
}
int ids=int.Parse(myQuery);
string ConnectionString = ConfigurationManager.ConnectionStrings["mycon"].ConnectionString;

ClassDataContext ctx = new ClassDataContext(ConnectionString);
var quary = from news in ctx.tbl_news where news.new_id == ids select news.new_string;

AmirHarirbafan
دوشنبه 27 دی 1389, 21:45 عصر
شما میتونید از کنترل Literal استفاده نمایید.
این کنترل ها این قابلیت رو دارن که هر متنی رو بهشون بدی ، عینا به کد HTML شما اضافه کنه
دقیقا مثل اینکه خودت بری توی صفحه Aspx و متد Response.Write رو فراخونی کنی



Literal1.Text = "<h1>Amir</h1> <br/> <h2>Harir</h2>";

jaykob
دوشنبه 27 دی 1389, 22:41 عصر
من این کنترل رو گذاشتم و به این شکل خواستم پرس و جو را نشان بدم



Literal1.Text = quary.ToString();


اما در صفحه مربوطه این صفحه نشان داده می شه :



SELECT [t0].[new_string] FROM [dbo].[tbl_news] AS [t0] WHERE [t0].[new_id] = @p0


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

مهدی کرامتی
سه شنبه 28 دی 1389, 09:57 صبح
این خط:

var quary = from news in ctx.tbl_news where news.new_id == ids select news.new_string;
را به این شکل تغییر دهید و دوباره امتحان کنید:

string result = from news in ctx.tbl_news where news.new_id == ids select news.new_string;

jaykob
سه شنبه 28 دی 1389, 19:54 عصر
این خط:

var quary = from news in ctx.tbl_news where news.new_id == ids select news.new_string;
را به این شکل تغییر دهید و دوباره امتحان کنید:

string result = from news in ctx.tbl_news where news.new_id == ids select news.new_string;

ممنون من این خط رو جایگزین کردم اما بازم به همون شکل قبل بود و زمانی از var به string تغییر می دیم یک خط قرمز زیر عبارت select می کشه .

دوستان ممنون می شم هر چه سریعتر راهنمایی کنید .

تشکر

Javad_Darvish_Amiry
چهارشنبه 29 دی 1389, 17:07 عصر
سلام دوست خوبم.
قبل از این که از متغیر query استفاده کنید، این کد رو اضافه کنید:

string item = quary.First<String>();
حالا از متغیر item استفاده کنید.
دلیل: متغیر quary حاوی شیئ پرس و جو هستش نه شیئ جواب پرس و جو. از طرفی عبارت select در linq یه شیئ IQueryable ( جنریک یا غیر جنریک بسته به پرس و جو) بر میگردونه که شما در حالت دوم، سعی کردید اون رو تو یه استرینگ بریزید که عملا امکان پذیر نیست (مگر با کاست صریح):

string result = from news in ctx.tbl_news where news.new_id == ids select news.new_string;
و اون خط قرمز برای همین بوده.
موفق باشید.

jaykob
چهارشنبه 29 دی 1389, 17:36 عصر
سلام دوست خوبم.
قبل از این که از متغیر query استفاده کنید، این کد رو اضافه کنید:

string item = quary.First<String>();حالا از متغیر item استفاده کنید.
دلیل: متغیر quary حاوی شیئ پرس و جو هستش نه شیئ جواب پرس و جو. از طرفی عبارت select در linq یه شیئ IQueryable ( جنریک یا غیر جنریک بسته به پرس و جو) بر میگردونه که شما در حالت دوم، سعی کردید اون رو تو یه استرینگ بریزید که عملا امکان پذیر نیست (مگر با کاست صریح):

string result = from news in ctx.tbl_news where news.new_id == ids select news.new_string;و اون خط قرمز برای همین بوده.
موفق باشید.


سلام

ممنون آقای امیری درست شد .

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

سپاس

Javad_Darvish_Amiry
چهارشنبه 29 دی 1389, 18:17 عصر
میتونید از این روش ساده استفاده کنید، البته راههای زیادی هست و مسلما روش هایی که خیلی بهینه تر و حرفه ای تر هستن، این ساده ترین راهیه که همین الان به ذهنم میرسه:
اول رشته تقاضاتون باید مجموعه فیلدها رو برگردونه، نه تک فیلد (چون تک فیلد دیگه نیاز به گریدویو نداره) مثلا اگه تو همون مثال بالا بخوایم بررسی کنیم، قسمت select به این صورت تغییر میکنه:

var quary = from news in ctx.tbl_news where news.new_id == ids select news;
حالا باز باید نتیجه از شیئ کوئری بازیابی و کاست بشه به تایپ مناسب. مثلا:

List<tbl_new> items = quary.ToList<tbl_new>();
یا:

tbl_new[] items = quary.ToArray<tbl_new>();
البته تایپ های دیگه ای هم هست که اینا از همه ساده ترن، حالا، با items هر کاری می تونید انجام بدید. میتونید مستقیما کد html مورد نیاز رو ازش تولید کنید (با مثلا foreach و گشتن تو آیتمهاش) یا اونو به عنوان یه DataSource به یه گریدویو معرفی کنید. مثل این:


GridView1.DataSource = items;
GridView1.DataBind();

سعی کردم مختصر و مفید باشه. پیروز باشید.

jaykob
پنج شنبه 30 دی 1389, 17:32 عصر
ممنون آقای امیری

من کدم به شکل زیر شد اما ظاهرا داخل نوشتن var quary مشکلی هست و اینکه زمانی از این کد استفاده می کنیم :



tbl_student[] items = quary.ToArray<tbl_student>();


زیر quary خط قرمز می کشه .

کد من کلا به شکل زیر است :



public void se()
{
string ConnectionString = ConfigurationManager.ConnectionStrings["iliyaConnectionString"].ConnectionString;
ClassDataContext ctx = new ClassDataContext(ConnectionString);

switch (DrpListSearchFild.SelectedIndex)
{
case 0:
var quary = from item in ctx.tbl_students where item.student_family == txtSearchText.Text select item;
break;
case 1:
var quary = from item in ctx.tbl_students where item.student_govcode == txtSearchText.Text select item;
break;
case 2:
var quary = from item in ctx.tbl_students where item.student_email == txtSearchText.Text select item;
break;
}
tbl_student[] items = quary.ToArray<tbl_student>();
grdSearchResult.DataSource = items;
grdSearchResult.DataBind();
}



کلا متد اجرا نمی شه متغییر تعریف کردن رو خیلی دستکاری کردم اما درست نشد .

ممنون .

Javad_Darvish_Amiry
پنج شنبه 30 دی 1389, 18:41 عصر
سلام دوست من. خوب به خاطر اینه که شما متغیر query رو توی ساختار switch تعریف میکنید و طبیعتا (به خاطر حوزه حیات متغیرها) بیرون از این ساختار دیگه اون شیئ وجود نداره. تعریف متغیر رو ببرید بیرون از بلاک switch و تو بلاک بهش مقدار بدید. البته یه خورده ریزه کاری هم داره (متغیر قبل از استفاده باید مقدار دهی شده باشه) که پیشنهاد میکنم خودتون سعی کنید پیداشون کنید. اگه نشد، باز من در خدمتم.