Questions about ScrollingGrid
Paschal seems to have a few issues with my new server control. Outstanding, I love to answer questions! :)
His first question was "Robert, why do you sell these controls? Why not just give them away?" Well, Paschal, the answer is simple. I run a business. Some people have day jobs, where they go and write code for other people. This is my day job. It's how I make my living. I don't give my code away, but at the prices I sell them at, I practically do anyways. I spent a lot of time building these solutions. I also give away a lot of my secrets if you read my weblog often enough.
Paschal then asks "How do you trademark a feature that is a part of Whidbey?" Well, the trademark is not on the feature (because that would be called a patent). The trademark is actually on the name itself. I don't believe that this feature is a part of Whidbey, you may be referring to "out-of-band callbacks" which is a really exciting and completely unrelated feature.
He goes on to ask, "Why not use an HTC?" The answer is simple, and I did mention it in my post. HTCs are not cross-browser compatible, and are completely reliant on the client-side. We were looking for more of a server-side approach, and only use script to handle the ScrollBack Retention, which is not a part of the original HTC functionality, and can be shut off if desired.
His next question is a tad more pointed: "Didn't you rip off this code from Dino Esposito a month ago in ASPnetPRO magazine?" While I would typically not make such accusations in public, I can say with certainty that the answer is no on two fronts: No, because the code was written nearly 12 months ago, and no because he handles the solution completely different than we do. We have not taken any code from that control to accomplish what we do in our product.
As you can see in our demo, the control renders completely different than Dino's example. Dino's example is the same as David/Julia's solution.
Sure, if you wanted to, you could write the code from his article. But you wouldn't keep your position on postback, and it wouldn't show you how to reflect against your application automatically to do some work depending on whether or not an HttpHandler is registered in the web app (which is something that, to our knowledge, has never been tried in a server control before).
My bet is that you'll just save yourself a few hours and pay the measly $10 to use the control as many times as you like. If you don't, hey baby that's capitalism.
But Paschal didn't stop there. He posted his solution to the problem as well. Outstanding! it's really great to see the community at work, giving people lots of solutions to choose from. It's definitely nice to be able to have options. I wanted to take the opportunity to point out a few major differences between the solutions.
1) His solution requires you to construct the stationary header by hand. ScrollingGrid handles this automatically, using the same designer techniques as the standard DataGrid component. If your headers change in your DataGrid declaration, our reconstructed headers will change automatically for you. His solution is hardcoded, and therefore won't handle that. And ScrollingGrid handles the footer too.
2) His solution requires you to add a considerable amount of code bloat to your ASPX pages. ScrollingGrid works with your existing DataGrid declarations by changing only two lines of code. The size of your ASPX page will not change when using ScrollingGrid.
3) His solution makes the DataGrid scrollable all the time. You cannot shut it off. ScrollingGrid's scrolling capabilities can be manipulated in the designer or programmatically, allowing you to shut the scrolling off if you so desire. Because of this, I'm sure you'll never want to use the standard DataGrid again.
Well, there you have it folks, you have three different options for enhancing your UI with a scrollable DataGrid.The solution you use is up to you. In the meantime, feel free to e-mail me or reply to this post with any more questions you have. And be sure to check back on Monday when we release the product. Customer feedback is an integral part of our development process.