PDA

View Full Version : مشكل در نمايش تصوير بعد از اپلود



pedram_ns
جمعه 20 فروردین 1389, 17:21 عصر
سلام
من در سايت يك قسمت براي آپلود عكس دارم كه در رويداد لود صفحه اطلاعات رو ابتدا با كد نويسي از ديتابيس مي خونم تا اگه عكس موجود بود دكمه حذف و اگه نبود دكمه ارسال و اپلود ظاهر بشه.
مشكلم اينجاست كه بعد از آپلود يا بعد از حذف تغييري در حالت عكس ايجاد نميشه و بايد يك بار صفحه رو رفرش كنم.مثلا وقتي حذف مي كنم عكس حذف مي شه ولي بازهم در صفحه وب عكس سر جاشه تا يك بار صفحه رفرش بشه بعد از اون عكس در صفحه حذف مي شه براي اين مشكل بايد چكار كرد.


در واقع كدهاي مربوط به نمايش تصوير و دكمه ها در رويداد لود صفحه است كه بعد از انجام عمليات اين كد ها خونده نميشه و بايد صفحه رفرش بشه تا رويداد لود صفحه خونده بشه با چه كدي اين كار ممكنه با كد redirect هم نشد؟

Mostafa_Dindar
جمعه 20 فروردین 1389, 17:28 عصر
سلام ،

در صورتي كه از عكسهاي شما در كنترلهاي ديتا مثل گريدويو و ... قرار گرفته باشه ، ميتوانيد پس از حذف از متد DataBind استفاده كنيد :

GridView1.DataBind()

در غير اينصورت ، لطفا توضيح بدين كه چطور عكسها رو نمايش ميدين ؟

pedram_ns
جمعه 20 فروردین 1389, 18:12 عصر
نه از كنترل ديگه اي استفاده نكردم
يك image به نام imagepic1 در صفحه گذاشتم و كد رو بهش نسبت مي دم

imagepic1.ImageUrl = "images/company/pic/" & pic1

pic1 مقدار نام تصويره كه از ديتابيس خوندم.

Mostafa_Dindar
جمعه 20 فروردین 1389, 19:04 عصر
EnableViewState رو مقدار فالس بده ، شايد اينطور درست بشه .

pedram_ns
شنبه 21 فروردین 1389, 14:43 عصر
كمكي نكرد!
من فقط كدي مي خوام كه يك صفحه رو دوباره رفرش كنه تا كدهاي رويداد لود اجرا بشه فقط همين چه كدي اين كار رو مي كنه ايا استفاده از دستور goto براي مراجعه به خطي كه رويداد pageload در اونه كمكي مي كنه؟

General-Xenon
شنبه 21 فروردین 1389, 19:05 عصر
كمكي نكرد!
من فقط كدي مي خوام كه يك صفحه رو دوباره رفرش كنه تا كدهاي رويداد لود اجرا بشه فقط همين چه كدي اين كار رو مي كنه ايا استفاده از دستور goto براي مراجعه به خطي كه رويداد pageload در اونه كمكي مي كنه؟

سلام....!
شاید بعد از عملیات این کد رو بزاری درست بشه


Response.Redirect("./default.aspx");//Esme Pagi Ke Amaliat toosh Anjam Mishe


امید وارم کار کنه:چشمک:

pedram_ns
شنبه 21 فروردین 1389, 23:42 عصر
سلام....!
شاید بعد از عملیات این کد رو بزاری درست بشه


Response.Redirect("./default.aspx");//Esme Pagi Ke Amaliat toosh Anjam Mishe
امید وارم کار کنه:چشمک:

راستش متوجه منظورتون نشدم(اسم پگي كه عمليات توش انجام مي شه) مي شه بيشتر توضيح بدين

اين كد هاي منه:

كد لود صفحه

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim username As String
username = User.Identity.Name


Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|database.mdb")
Dim selectsql As String = "SELECT [ID], [logo] FROM [company] WHERE ([user] = ?)"

Dim cmd As New OleDbCommand(selectsql, con)
cmd.Parameters.AddWithValue("user", username)
Dim reader As OleDbDataReader
con.Open()

reader = cmd.ExecuteReader()
reader.Read()
Dim log As New StringBuilder()
log.Append(reader("logo"))


Dim logo As String
logo = log.ToString


reader.Close()
If logo <> "" Then
imagelogo.ImageUrl = "images/company/logo/" & logo
logoUpload.Visible = False
logosend.Visible = False
logodelete.Visible = True
Else
imagelogo.ImageUrl = "images/web/default.gif"
logoUpload.Visible = True
logosend.Visible = True
logodelete.Visible = False
End If


con.Close()

End Sub

كد آپلود:

Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|database.mdb")
Dim UpdateString As String = "Update company Set logo = ? Where User = ?"
Dim cmd As OleDbCommand = New OleDbCommand(UpdateString, con)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("logo", filename)
cmd.Parameters.AddWithValue("User", username)
con.Open()
Try

cmd.ExecuteNonQuery()

Label3.Text = "آپلود تصوير با موفقيت انجام شد."
Label3.Visible = True
Label3.ForeColor = Drawing.Color.Green


Catch ex As Exception
Label3.Text = "آپلود تصوير انجام نشد."
Label3.Visible = True
Label3.ForeColor = Drawing.Color.Red

End Try
con.Close()

reza.ziyaee
یک شنبه 22 فروردین 1389, 00:23 صبح
سلام دوست عزیز

من در کد هایی شما دستوری برای آپلود کردن نمیبینم :متفکر: . تنها دستورات sql رو اجرا می کنند .

mehdima
یک شنبه 22 فروردین 1389, 09:18 صبح
با سلام

دوست عزیز pedram_ns
مشکل از PostBack ای هست که موقع کلیک روی Button ها به وجود میاد.
راه حل

شما باید یک متد تعریف کنید که پس از هر تغییر اطلاعات رو نمایش بده سپس این رویداد رو در Page Load در شرط If Not Page.IsPostBack Then قرار بدید(یعنی این متد در Page Load فقط یکبار اجرا میشه.این مشکل رو حل میکنه.) و برای کلیک دکمه ها هم بعد از انجام عمل مربوطه(آپلود یا حذف) بازم این رویداد رو فراخوانی کنید.
موفق باشید.

pedram_ns
یک شنبه 22 فروردین 1389, 14:45 عصر
در مورد كد اپلود . بله كد ها رو ننوشتم ولي مشكلي در اپلود فايل ندارم.
در مورد كد ispostback بايد چطور اون رو در رويداد آپلود يا حذف فرابخونم اگر روي كدهاي خودم بهم نشون بدين ممنون مي شم.

mehdima
یک شنبه 22 فروردین 1389, 16:46 عصر
در مورد كد اپلود . بله كد ها رو ننوشتم ولي مشكلي در اپلود فايل ندارم.
در مورد كد ispostback بايد چطور اون رو در رويداد آپلود يا حذف فرابخونم اگر روي كدهاي خودم بهم نشون بدين ممنون مي شم.

با سلام

به صورت زیر عمل کنید:

در رویداد لود صفحه


If Not Page.IsPostBack Then
در این قسمت متدی که اطلاعات رو از پایگاه داده میخونه و نمایش میده رو قرار بدید.
End If
در رویداد دکمه های حذف و آپلود و ... پس از انجام عمل مربوطه متدی که در رویداد لود صفحه گذاشتید رو دوباره فراخوانی کنید.

pedram_ns
یک شنبه 22 فروردین 1389, 19:31 عصر
خوب من بعد از عمليات آپلود يا حذف تصوير، دوباره كد هاي مربوط به خوندن و نمايش تصوير رو نوشتم و كار كرد.
ايا منظورتون از فراخوني، دوباره نوشتن كدها بود يا چيز ديگه؟

mehdima
دوشنبه 23 فروردین 1389, 01:17 صبح
با سلام

منظورم این بود که شما متدی تعریف کنید(مثلا با نام GetGata) که اطلاعات رو از جدول پایگاه داده بخونه و نمایش بده.بعد هر جا که خاستید ازش استفاده کنید(یعنی فراخوانیش کنید(صداش بزنید)) تا دیگه نیاز نباشه هر بار که میخایند داده ها رو بخونید و نمایش بدید کدها رو دوباره بنویسید.

pedram_ns
دوشنبه 23 فروردین 1389, 08:52 صبح
خوب من با اين روش اشنا نيستم.
كد هاي مربوطه در رويداد لود صفحه اومده حالا با چه كدي دقيقا مي شه اون رو فراخوند؟

mehdima
دوشنبه 23 فروردین 1389, 09:14 صبح
با سلام
بیبینید در کد زیر متدی با نام GetData در رویداد های لود صفحه و کلیک باتون ها فراخوانی شده.



Private Sub GetData()
کدی که برای خواندن و نمایش داده ها هست اینجا قرار میگیره.
End Sub

Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
GetData()
End Sub


Public Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
GetData()
End Sub

Public Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)
GetData()
End Sub