ورود

نسخه کامل مشاهده نسخه کامل : مشکل با نمایش انتقال صفحه توسط querystring



kian1608
14-03-2013, 21:49
من یه صفحه محصولات دارم که تو datalist محصولات رو همراه با عکسش نمایش میده و همچنین یه لینک دانلود گذاشتم که کاتالوگ محصول رو دانلود کنم. تا اینجا همه درست کار میکنه ولی وقتی با querystring انتقال می دم به یه صفحه دیگه که توضیحات کامل اون محصول رو نمایش بده متنو نمایش میده ولی عکس و لینک دانلود رو نمیشناسه. عکسها هم تو یه پوشه به نام pix است. تو صفحه اولی نشون میده ولی تو صفحه شرح محصول نمایش نمیده حتما باید اون عکس رو از پوشه بیرون بیارم تا نشون بده. من از این کذها استفاده کردم اگه میشه لطفا کمک کنیدچون خیلی به این نیاز دارم. اینم کدها:
صفحه اول:
عکس رو اینجوری گرفتم:
<asp:Image ID="Image2" runat="server" Height="95px" Width="130px" ImageUrl='<%# Eval("tasvir_link","~/pix/{0}") %>' /><br />
و با این کد انتقال دادم:
<asp:HyperLink ID="HyperLink1" runat="server" ForeColor="#0000CC"
NavigateUrl='<%# Eval("Id", "prodsharh.aspx?Code={0}") %>'>ادامه مطلب...</asp:HyperLink>
تو صفحه دوم با همین کدها گرفتم و تو page load این کد رو گذاشتم:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim con As New Data.SqlClient.SqlConnection("data source=(local);initial catalog=hasti;uid=sa;pwd=123")
Dim query As String = "select prod.id,prod.title,prod.mashroh,prod.tasvir_link,c atalog.file_link,catalog.code from prod inner join catalog on prod.id=catalog.code where id=@id"
Dim cmd As New Data.SqlClient.SqlCommand(query, con)
cmd.Parameters.AddWithValue("Id", Request.QueryString("code"))
con.Open()


Dim dr As Data.SqlClient.SqlDataReader = cmd.ExecuteReader()


dr.Read()


lbl_mashroh.Text = dr("mashroh").ToString()
lbl_onvan.Text = dr("title").ToString()


HyperLink2.NavigateUrl = dr("file_link").ToString()


Image2.ImageUrl = dr("tasvir_link").ToString()
dr.Close()


con.Close()
End Sub
End Class
مشکل اینه که عکس و لینک دانلود عمل نمیکنه. لطفا کمکم کنید

anvar.net
15-03-2013, 21:41
چرا در فرم لیست محصولات تصویر هر محصول را از پوشه pix می گیری اما در صفحه مشخصات محصول از پوشه pix خبری نیست. قطعا فقط نام و فرمت تصاویر در دیتابیس ذخیره شده اند و نه کل مسیر فایل های تصاویر. منظورم این دو خط کده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

kian1608
16-03-2013, 01:02
سلام دوست عزیز. درسته، فقط اسم و فرمت تصویر ذخیره میشه. این کد دومی رو من تو قسمت html صفحه مشخصات محصول هم گذاشتم، این کد رو که تو قسمت کد پشتی یا aspx. نمیشه گذاشت! اگه میشه بگین من یه کوچولو تازه واردم. بعدش چجوری میشه آدرس رو هم ذخیره کرد تو دیتا بیس؟ من با این کد عکس رو آپلود می کنم:
If (fup_tasvir.HasFile) Then
fup_tasvir.SaveAs(Server.MapPath("~/pix/") + fup_tasvir.FileName)

anvar.net
16-03-2013, 21:56
در صفحه مشخصات محصول- شما اطلاعات متنی رو بدرستی از بانک می گیرید پس عملا مشکلی در اتصال و واکشی اطلاعات نیست و فقط لینک های تصاویر مشکل دارند. شما در سوالات آینده سعی کنید کدهای که در پست های میذاری رو در تگ های php بذار تا راحت تر قابل خوندن باشن.


این کد دومی رو من تو قسمت html صفحه مشخصات محصول هم گذاشتم، این کد رو که تو قسمت کد پشتی یا aspx. نمیشه گذاشت!

شما در رویداد لود صفحه این کد رو قبلا اختصاص دادی دیگه نیازی به گذاشتن مجدد در قسمت html نیست و باید اون رو پاک کنی. در این جا

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
,من هنوز فکر می کنم مشکل کد شما در مسیر دهی عکس هاست.

در قسمت لیست محصولات شما لینک تصاویر را بصورت زیر می گیرید () در پوشه روت وب سایت شما پوشه ای به نام pix هست که تصاویر محصولات رو میذاری . اگر عکس هایی که در صفحه مشخصات محصولات می گیری در همین پوشه هستن باید مسیر دهی عکس بصورت زیر باشد - ~/pix/ + نام عکس که از بانک می گیری + احتمالا هم پسوند فایل تصویر
ولی در کد شما که در زیر آمده خبری از کل مسیر نیست و فقط نام فایل که از بانگ گرفتی بعنوان مسیر تصویر به کنترل ایمیج ست کردی

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای ذخیره عکس ها هم نیازی نیست که کل مسیر رو در بانک ذخیره کنی - اسم پوشه ای که در آن تصاویر قرار داده می شوند ثابته لذا می تونی در زمان ست کردن مسیر تصویر برای کنترل ایمیج بنویسی. مثلا ~/productimages/ + نام و فرمت عکس که ادر بانک ذخیره م یکنی.

kian1608
16-03-2013, 23:13
راستش یکم گیج شدم. من کل کدهای صفحه مشخصات محصول رو میزارم ببین مشکل از چیه:
کنترل هایی که تو قسمت html گذاشتم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کدهای page load:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

anvar.net
17-03-2013, 19:37
نیازی به گذاشتن کد اول در قسمت html صفحه مشخصات محصول نیست زیرا شما در همین صفحه و در رویداد لود نام تصویر رو از دیتارید می گیری و به آدرس کنترل امیج ست می کنی. پس کد اول در قسمت بالا رو حذف کن. در رویداد لود صفحه هم که اطلاعات رو از بانک می گیری : با فرض اینکه صفحه مشخصات محصول (مثلا productdetail.aspx) در روت پروژه قرار گرفته باشه و پوشه pix که محتوی عکس های محصولات هست نیز در روت پروژه باشد .آدرس عکس کنترل ایمیج خود رو بصورت زیر تنظیم کن

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر صفحه مشخصات محصول در داخل پوشه ای در روت قرار دارد به جای pix/ از ~/px/ استفاده کن. فقط همین. مقدار tasvir_link در پایگاه داده بصورت نام تصویر و فرمت آن باید ذخیره شده باشد مثلا
product1.jpg - برای لینک ها هم دقیقا مشابه همین می تونی عمل کنی و نام فایل بعلاوه پسوند اون رو ذخیره کنی مثلا product.pdf

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

kian1608
17-03-2013, 20:43
حل شد.
نمیدونم چطوری تشکر کنم. واقعا کمک بزرگی کردی بهم. یه دنیا تشکر دوست خوبم.:n01: