رفتن به مطلب
  • 0

سوال درباره حذف آیتم مولتی پنل


Kazem Forghani

سوال

سلام دوستان

من روی هر آیتم از مولتی پنلم یک دکمه قرار دادم که با کلیک روی اون آیتم از دیتابیس حذف می شه.

چگونه می تونم اون پنل رو هم در همون لحظه حذف کنم؟ البته می تونم دوباره کل آیتم ها رو دوباره لود کنم اما می خوام در همون لحظه آیتم حذف شه از لیست.

من با Tag و Sender هم نتونستم این کار رو انجام بدم.

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

19 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام

تو حلقه ات

button1.tag = i
Sub button1_Click
	Dim bt As Button
	bt = Sender
	s.Panel.RemoveViewAt(bt.Tag)
End Sub

یه تست بزن کاظم جان...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون بابت پاسخ سریعتون...

اما ارور داد:

Sub btnDelete_Click
	Try
		Dim btn2 As Button
		btn2 = Sender
		SQL1.ExecNonQuery("DELETE FROM tbl WHERE ID = " & btn2.Tag)
		p1.RemoveViewAt(btn2.Tag)
	Catch
		Log(LastException)
		ToastMessageShow("error!", False)
	End Try
End Sub

اروری که در Log مشاهده شد:

(NullPointerException) java.lang.NullPointerException

خیلی ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

بفرمایید با تگ و سندر براتون نوشتم. 

Sub Globals

Dim h As Int
Dim p(6) As Panel

End Sub

Sub Activity_Create(FirstTime As Boolean)



For i=0 To 5
Dim b As Button
p(i).Initialize("p")
b.Initialize("B")
p(i).AddView(b,30%x,0,30%x,10%y)
p(i).Color = Colors.White
Activity.AddView(p(i),0,h,100%x,15%Y)
h = h+17%y
b.Tag = i
Next




End Sub
Sub b_Click
	Dim ba As Panel
	ba.Initialize("")
	ba=Sender
	ToastMessageShow(ba.Tag,False)
	p(ba.Tag).RemoveView
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

سلام

بفرمایید با تگ و سندر براتون نوشتم. 

Sub Globals

Dim h As Int
Dim p(6) As Panel

End Sub

Sub Activity_Create(FirstTime As Boolean)



For i=0 To 5
Dim b As Button
p(i).Initialize("p")
b.Initialize("B")
p(i).AddView(b,30%x,0,30%x,10%y)
p(i).Color = Colors.White
Activity.AddView(p(i),0,h,100%x,15%Y)
h = h+17%y
b.Tag = i
Next




End Sub
Sub b_Click
	Dim ba As Panel
	ba.Initialize("")
	ba=Sender
	ToastMessageShow(ba.Tag,False)
	p(ba.Tag).RemoveView
End Sub

این کدها رو هم روی پروژه خودم اعمال کردم و باز ارور داد در Log :

main_showdata (java line: 651)
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
	at ir.forghani.clipboard.main._showdata(main.java:651)
	at ir.forghani.clipboard.main._activity_create(main.java:376)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
	at ir.forghani.clipboard.main.afterFirstLayout(main.java:102)
	at ir.forghani.clipboard.main.access$000(main.java:17)
	at ir.forghani.clipboard.main$WaitForLayout.run(main.java:80)
	at android.os.Handler.handleCallback(Handler.java:733)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5045)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
	at dalvik.system.NativeStart.main(Native Method)

خیلی ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببخشید 

بجای اینکه در ساب کلیک باتن تعریف کنم ، پنل تعریف کرده بودم . 

کد زیر را جایگزین ساب کلیک کنید .

Sub b_Click
	Dim ba As Button
	ba.Initialize("")
	ba=Sender
	ToastMessageShow(ba.Tag,False)
	p(ba.Tag).RemoveView
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

ارور کاظم جان ممکنه مربوط به کورزور هم باشه...

چون ای دی یکی بیشتر از i که شمارنده هستش ، هست...

اگه ایتم اول رو بخواد حذف کنه ممکنه ارور داشته باشه...

cur.postion هم چک کن کاظم جان..

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من تست کردم درست بود . 

احتمالا ساب Activity_Pause و Activity_Resume رو پاک کردید . 

سلام

من فقط تغییراتی که شما گفته بودید رو اعمال کردم. البته توجه داشته باشید که من اطلاعات خودم رو از دیتابیس می خونم. (فکر نکنم بطی داشته باشه البته)

ساب های Activity_Pause و Activity_Resume در پروژه وجود دارن.

همچنین من تغییرات رو برگردوندم و درست شد.

پس مشکل از همین کدها بوده...

 

ارور کاظم جان ممکنه مربوط به کورزور هم باشه...

چون ای دی یکی بیشتر از i که شمارنده هستش ، هست...

اگه ایتم اول رو بخواد حذف کنه ممکنه ارور داشته باشه...

cur.postion هم چک کن کاظم جان..

من تگ باتن رو از حلقه می گیرم و مقدار Cursor رو هم از همون حلقه.

پس Tag و Position با هم برابرند، درست؟

کدهایی رو هم که قرار دادم بی زحمت یه نگاه بندازید.

(منظورتون رو درست متوجه شدم؟)

ممنون

---------------------

ویرایش:

در ضمن کد آقا امین وقتی که پروژه اجرا می شه ارور می ده نه وقتی روی باتن کلیک شد...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من فقط تغییراتی که شما گفته بودید رو اعمال کردم. البته توجه داشته باشید که من اطلاعات خودم رو از دیتابیس می خونم. (فکر نکنم بطی داشته باشه البته)

ساب های Activity_Pause و Activity_Resume در پروژه وجود دارن.

همچنین من تغییرات رو برگردوندم و درست شد.

پس مشکل از همین کدها بوده...

 

من تگ باتن رو از حلقه می گیرم و مقدار Cursor رو هم از همون حلقه.

پس Tag و Position با هم برابرند، درست؟

کدهایی رو هم که قرار دادم بی زحمت یه نگاه بندازید.

(منظورتون رو درست متوجه شدم؟)

ممنون

---------------------

ویرایش:

در ضمن کد آقا امین وقتی که پروژه اجرا می شه ارور می ده نه وقتی روی باتن کلیک شد...

 

 

 

بله مشکل از من بود . کد رو تصحیح کردم .

معذرت میخوام

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله مشکل از من بود . کد رو تصحیح کردم .

معذرت میخوام

سلام مجدد

من وقتی کدها رو می نوشتم خودم بجای پنل باتن تعریف کردم اما مشکل همچنان پابرجای بود.

 

این لینک هم به نتیجه نرسیده: http://answercenter.ir/topic/9723-%D8%AD%D8%B0%D9%81-%DB%8C%DA%A9-%D8%A7%DB%8C%D8%AA%D9%85-%D9%85%D9%88%D9%84%D8%AA%DB%8C-%D9%BE%D9%86%D9%84-%D9%88-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D9%85%DA%A9%D8%A7%D9%86-%D8%A7%DB%8C%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1/

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

سلام

بفرمایید با تگ و سندر براتون نوشتم. 

Sub Globals

Dim h As Int
Dim p(6) As Panel

End Sub

Sub Activity_Create(FirstTime As Boolean)



For i=0 To 5
Dim b As Button
p(i).Initialize("p")
b.Initialize("B")
p(i).AddView(b,30%x,0,30%x,10%y)
p(i).Color = Colors.White
Activity.AddView(p(i),0,h,100%x,15%Y)
h = h+17%y
b.Tag = i
Next




End Sub
Sub b_Click
	Dim ba As Panel
	ba.Initialize("")
	ba=Sender
	ToastMessageShow(ba.Tag,False)
	p(ba.Tag).RemoveView
End Sub

 

 

سلام

بفرمایید با تگ و سندر براتون نوشتم. 

Sub Globals

Dim h As Int
Dim p(6) As Panel

End Sub

Sub Activity_Create(FirstTime As Boolean)



For i=0 To 5
Dim b As Button
p(i).Initialize("p")
b.Initialize("B")
p(i).AddView(b,30%x,0,30%x,10%y)
p(i).Color = Colors.White
Activity.AddView(p(i),0,h,100%x,15%Y)
h = h+17%y
b.Tag = i
Next




End Sub
Sub b_Click
	Dim ba As Panel
	ba.Initialize("")
	ba=Sender
	ToastMessageShow(ba.Tag,False)
	p(ba.Tag).RemoveView
End Sub

دوست عزیز !! :fekr:  :girl_blush:

اولا باتن b رو اینشالایز نکردین

دوم تو متد b_click شما اومدین sender رو مساوی پنل قرار دادین 

خب اشتباهه sender یا باتن یا view میتونه باشه در غیر این صورت castexeption به وجود میاد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا کاظم پس چرا برای من درست کار میکنه ؟

سلام مجدد

پس اگر امکان داره یک سورس قرار بدید امتحان کنم.

برای من که ارور می ده!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا کاظم شما با مولتی پنل نمیتونین همچین کاری کنین(بعید میدونم)

دلیلش هم اینه شما میخواین یه پنل رو حذف کنین از ویوتون در صورتی که توی رویداد باتن فقط تگ باتن رو دارید و وقتی ()removeviewat اجرا میشه قاعدتا خود باتن حذف میشه نه پنل تازه اگه خطا نده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز !! :fekr:  :girl_blush:

اولا باتن b رو اینشالایز نکردین

دوم تو متد b_click شما اومدین sender رو مساوی پنل قرار دادین 

خب اشتباهه sender یا باتن یا view میتونه باشه در غیر این صورت castexeption به وجود میاد

 

 

انیشیالایز کردم که  :fekr:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام مجدد

پس اگر امکان داره یک سورس قرار بدید امتحان کنم.

برای من که ارور می ده!

 

http://s6.picofile.com/file/8257731076/test.rar.html

لینک ارسال
به اشتراک گذاری در سایت های دیگر

انیشیالایز کردم که  :fekr:

آها ببخشید ندیدم  :malih:

بعد این چیزی که نوشتی که مولتی پنل نیست برادر اگه تعداد ویوهاش زیاد باشه چی؟ :fekr:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا کاظم شما با مولتی پنل نمیتونین همچین کاری کنین(بعید میدونم)

دلیلش هم اینه شما میخواین یه پنل رو حذف کنین از ویوتون در صورتی که توی رویداد باتن فقط تگ باتن رو دارید و وقتی ()removeviewat اجرا میشه قاعدتا خود باتن حذف میشه نه پنل تازه اگه خطا نده

پس چطوری می شه اینکار رو انجام داد؟ مگه می شه راهی نداشته باشه؟!

چون از لیمیت استفاده می کنم و آیتم ها زیاده لود دوباره اطلاعات هم کمکی نمی کنه. لود دوباره کاربر رو به اول اسکرول می فرسته و باید دوباره به قسمت مورد نظرش برگرده... در کل برای کاربر آزار دهنده هست. همچنین استفاده از این روشی که من قصد پیاده سازیش رو دارم کار رو زیبا تر می کنه. (دقیقاً مثل استفاده qJuery به جای لود دوباره صفحه وب).

...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام و تشکر

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

اما الان یک مشکب دیگه هم هست  :wacko1:

وقتی آیتم حذف شد چگونه جای خالی رو با آیتم های پایینی باید جایگزین کرد؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...