if I wanted to change value no 9,999 , id either have to go to the 1000th page and press EDIT, then sent to editindex and rowupdating eventually, or either have to sort the table by ID and get the 9,999id as a second record. this is not useful at all.
Confused.... this is always a problem when the number of record exceeds what a human can naturally handle. The standard solution is adding a search feature to filters the data into a more manageable result set. There are many approaches to filtering data; free formed entry, category, date, starts with, etc. The approach depends on the data. I'm sure you have experienced filtering while surfing the internet.
Sorting, paging, and filtering data with model binding and web forms
I need to save it on some kind of a list/dictionary and then to access the update method when passing it the exact place I need to change.
This is essentially the example I provided. If you are looking for a generic approach then refactor the code above to take advantage of C# generics and maybe an interface. However, I still question building a generic UPDATE statement. What's the benefit?
The go to approach is a stored procedure. At least with a stored proc (or parameter query) you get type checking. If you build a SQL generator then you also need to be mindful of type checking.
Generic classes and methods
interface (C# Reference)
As far as I can tell, the approach you are attempting involves a making a second copy of data which that already exists in the database. This causes synchronizing issues. If you really need a second copy then you should use a standard caching pattern where the cache expires at some frequency but I don't think caching is what you're after.
Frankly, I think you are over complicating the approach and you're not listening to the community's advice.