Solved

How to update an updatepanel using regular links?

Posted on 2007-12-04
5
1,163 Views
Last Modified: 2013-11-07
Hey everyone,

I have been breaking my brains over this one. The client we have really wants to use AJAX, and I say good for him, however there are some things that are a little harder to acchieve for this client.

For a part of what I am building we need to show the products they have, it's a shop that sells every kind of battery you can imagine. Normally I'd be thinking in the likes of repeaters or possibly a gridview to display the lists of products he has. However, the system that is running on the background requires some special concideration. The way I need to get the data out of there is done in their own special way and always returns me a so called SumatraVT.ResultSet, if I'd be in luck, I'd be able to bind that to the repeater, but...I am NOT in luck. ;)

It turned out I had to write out the entire thing from codebehind, so instead i created two literals inside the updatepanel. One to hold the products for the selected page, one to hold the pagination. I also added buttons to make sure I could jump from page to page. That works fine, but it does get confusing when you can see on which page you are by seeing the pagenumber below, but you can't click the link.

Now if this would have been without AJAX, that would have been easy for me, I'd just add a querystring value to tell the page to which pagenumber I'd want to go. Easy peasy right? But with AJAX and an updatepanel...I am at a loss. For all I know I need to be able to execute a server side function to make sure the page gets updated, but I cannot trigger a postback using an ordinary link, nor can I add a function that needs to get executed WHEN I click that link.

I'll admit I've been working on this for far to long which has clowded my mind a bit so I am not seeing any other solutions either at this point in time. Is there anyone out there that could solve my problem so I could give the pagination in a way that would be logical to use?

Thanks in advance. Just ask if you need to see any of my code. Although it really is a mess if you don't know this Sumatra system. (I've been building workaround upon workaround)

Kind regards,
Max.
0
Comment
Question by:DreamMaster
  • 3
5 Comments
 
LVL 11

Expert Comment

by:cmhunty
ID: 20401955
Just thinking about "the bigger picture" and taking a step back, would it not be possible to write a method to convert SamatraVT.ResultSet into a datatable/dataset, save the datatable into a session variable and use the standard repeater/gridview controls? Obviously this would depend on the size of the data and the load on the server.

0
 
LVL 19

Author Comment

by:DreamMaster
ID: 20402226
I seriously doubt it would. The resultset it produces works a bit like a reader would, but still is not compatible to it. What i've been doing since I couldn't use recordcount either, was placing the results into an arraylist, as I CAN check the length of that.

I would definately love it if Sumatra would be conform the standardized ASP.NET code, but it seems to need workarounds to get what I need done.

If only I knew how to convert this back to a dataset i'd be a happy geezer. I could do it by hand, but I think the load would be quite heavy. Everytime I am extracting data from the Sumatra Resultset the entire application slows down. When debugging I can even see that it's the Sumatra parts that take that long.. If only I could have done without the Sumatra system, this site would have been finished long ago. ;)

Regards,
Max.
0
 
LVL 1

Accepted Solution

by:
cwoods08 earned 500 total points
ID: 20412008
I think it may be possible to covert the data into a dataset.  You may look at using a webservice with AJAX to help control the page load times.  This article can explain how to do that; http://visualstudiomagazine.com/features/article.aspx?editorialsid=2374.

The other option would be to set the UpdateMode to conditional for the Update Panel.  This would allow you to update the contents of that panel with a call in your server side code.  This would allow you to use your link with a query string to tell the Update Panel to update from your server side code.
0
 
LVL 19

Author Comment

by:DreamMaster
ID: 20418547
I'll look into that as soon as I can, may have to pull it over the weekend though, as I am not going to be working on the same project anymore this week. I will get back to you as soon as possible.

Regards,
Max.
0
 
LVL 19

Author Comment

by:DreamMaster
ID: 20448212
Well, I have managed to get the links working in a way that they show me a second page. There are some cosmetic differences and the fact remains that it triggers a page reload. Makes my updatepanel kinda useless in that regard. ;) It does however work, so that's something to start with. I would really like to get it updating my update panel without a page reload however, but I am afraid that's not going to work.

To make things a bit more clear to you. I have an updatepanel which shows the results of two CascadingDropDown boxes, and a third one which is hidden and just collects the value of a category I've chosen. So I have CascadingDropDown1 which is the category (for example Laptop batteries), after that I see two more Cascading DropDowns, first one is the brand, (for example Acer), the next one is the type of battery. When I have chosen those two values, or possibly only the first one (as both is possible) I get my results. When the pagesize is smaller than my results, I create pagelinks, when clicked, I'd like to get the updatepanel that was refreshed when I got my CascadingDropdowns filled, refreshed WITHOUT a page reload.

With normal links I haven't found a way to do that, since they don't trigger a Postback and I can't tell them which function to execute server side either. Clicking the links with querystrings (so that the CascadingDropDowns know which values were chosen and I know what page was selected) works, but reloads my page, which I was trying to keep from happening.

However, having said that. Producing the correct result is more important to me than doing that without a page reload. So I am happy to have it working to some extend..

I will keep this question open for a bit longer, hoping someone may know a way to do this without a page reload, but I am not clinging to that hope too much.

Thanks,
Max.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now