PDA

View Full Version : مشکل هنگام کار با grid view



ch2007
چهارشنبه 27 دی 1385, 23:31 عصر
من در یکی از صفحاتم از یک دیتاگرید استفاده کردم که دو فیلد آن از نوع Template field هستند که یکی از آنها image button و دیگری یک button است من command argumant این دو فیلد را برابر یکی از ستون های جدول گذاشتم اما وقتی روی آنها کلیک میکنم این ارور را میدهد :

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

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

Alireza_Salehi
پنج شنبه 28 دی 1385, 00:18 صبح
ch2007 عزیز
من هم همین مشکل رو داشتم در این پست (http://www.barnamenevis.org/forum/showthread.php?t=59517) مطرح کردم جوابی نگرفتم!
البته یه چند تا مطلب پیدا کردم ولی درست متوجه نشدم؟
مطلب 1 (http://odetocode.com/Blogs/scott/archive/2006/03/21/3153.aspx?CommentPosted=true#commentmessage)
مطلب 2 (http://www.codeproject.com/useritems/DoubleClickGridviewRow.asp)

در مورد سوال دومت هم باید از متد RowCommand در GridView استفاده کنی
به ای ن صورت که در قسمت Source صفه ای که ساختی وارد می شی و Commandname رو واسه کنترل مربوطه مقداردهی می کنی اگه آرگومانی هم داشتی با CommandArgument آن را رد می کنی مثلا:


<asp:ImageButton runat="Server" ID="btnBuy" CommandName="Buy" CommandArgument='<%#EVAL("ID") %>'/>
بعد در قسمت کد با Select case یا IF یا ... نام Command را تشخیص میدهی و هر کاری دلت خواست میکنی
مثلا:


Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
Select Case e.CommandName
Case "Sort"
Case "Buy"
Response.Redirect("~/...")
End Select
End Sub
در اون مورد اول اگه موفق شدی جوابشو بزار ما هم مشکلمون حل شه

rtech
پنج شنبه 28 دی 1385, 10:04 صبح
سلام بر دوستان عزیز
این ارور هنگامی رخ میدهد که مرورگر شما مقداری را به یک کنترل نامشخص برمیگرداند یا اینکه مقدار تعریف نشده باشد . شما به احتمال زیاد در Page_load صفحه مورد نظر کدهایی رو قرار دادید این باعث میشه وقتی روی دکمه یا عکس کلیک میشود مقداری نامشخص به صفحه برگردانده شود به خاطر همین شما باید دستوراتی که در page_load صفحه نوشته اید را در بین بلاک زیر قرار دهید تا مشکلتان حل شود :

if not (page.ispostback) then

دستورات

end if

و به این ترتیب دیگر این ارور را نمیبینید !!

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

ch2007
پنج شنبه 28 دی 1385, 10:08 صبح
سلام بر دوستان عزیز
این ارور هنگامی رخ میدهد که مرورگر شما مقداری را به یک کنترل نامشخص برمیگرداند یا اینکه مقدار تعریف نشده باشد . شما به احتمال زیاد در Page_load صفحه مورد نظر کدهایی رو قرار دادید این باعث میشه وقتی روی دکمه یا عکس کلیک میشود مقداری نامشخص به صفحه برگردانده شود به خاطر همین شما باید دستوراتی که در page_load صفحه نوشته اید را در بین بلاک زیر قرار دهید تا مشکلتان حل شود :

if not (page.ispostback) then

دستورات

end if

و به این ترتیب دیگر این ارور را نمیبینید !!

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

بسیار از شما تشکر میکنم شما دقیقا به چیزی اشاره کردید که من انجام داده بودم من کاری که شما گفتید را انجام دادم و کار کرد . باز هم ممنون از جوابتون

Alireza_Salehi
پنج شنبه 28 دی 1385, 11:29 صبح
من از متد databind استفاده کردم اگر این متد را در میان شرط ispostback قرار دهیم قابلیت paging در gridview از کار می افتد (البته اگر به صورت سفارشی گرید ویو را پر کنید نه با استفاده از دیتا سورس ها-یعنی در هر بار لود شدن صفحه شرایط پر شدن گرید ویو تغییر کند) (چون مقادیر رویدادهای Pageing به فرم postback نمی شود)!


خودم راه حلش رو پیدا کردم اگر به جای رویدادLoad از رویداد dataBinding صفحه استفاده کنید قبل از لود شدن صفحه مقادیر جدید داده می شود و هم paging کار می کند و هم این خطا اتفاق نمی افتد

البته در بعضی موارد اون متد رجیستر کردن واقعا لازمه اگه کسی یاد گرفت به ما هم بگه!

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

sin
جمعه 09 شهریور 1386, 07:08 صبح
خودم راه حلش رو پیدا کردم اگر به جای رویدادLoad از رویداد dataBinding صفحه استفاده کنید قبل از لود شدن صفحه مقادیر جدید داده می شود و هم paging کار می کند و هم این خطا اتفاق نمی افتد

سلام
میشه توضیح بدید چکار کردید

با تشکر