asp.net - Selecting the wrong item because of old data in GridView -
i'm working in visual studio 2010 c#/asp.net , sql server database. i'm trying fix website allow managers assign employees various tasks. problem if 2 managers working @ same time, wrong employee may assigned task. list of employees represented in gridview.
the problem seems occur because 1 of users looking @ old data in gridview.
let’s first person loads list , gridview looks this:
-employee 1
-employee 2
-employee 3
-employee 4
then second person comes in , makes assignment employee 2, removes employee 2 list. actual list looks this:
-employee 1
-employee 3
-employee 4
but first person still sees because page hasn’t updated yet:
-employee 1
-employee 2
-employee 3
-employee 4
the first person tries assign employee 3 task. still see old list. when click make assignment, page posts server (apparently selecting row in gridview control server side event, i’m not sure if there’s way around http://forums.asp.net/t/1706468.aspx/1). page reloads , tries postback event, checks , sees control not yet valid (because databinding occurs after postback event supposed processed), think postback event delayed until after databinding. (here’s order of events on page load http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx) once gridview has been databound, data date this:
-employee 1
-employee 3
-employee 4
and postback event can processed. postback event contains row index of control selected. third row selected, postback event gets employee 4 (who in third row) grid. uses information employee 4’s unique id, when wanted employee 3’s unique id. how ensure correct employee’s id in situation?
the problem seems click applied after databinding occurs , changes grid. thought preventing page doing postback thing try, gridview operations server side don’t think can that. don’t know of way preserve bound data through postback, every time post obliged new, potentially different, data. feel i’ve walked through of options, see wrong reasoning, or suggestions new things try? there way employee id before page posts back?
the page works fine 1 user, problem occurs when multiple users making changes @ same time.
you enable viewstate control, gridview data not have reloaded during postback.
instead control remember first loaded data during postback , continue work that.
of course not solve problem concurrency, example if employee deleted. in case have check actual database again before executing action , show error/warning user if operating on old data.
Comments
Post a Comment