TheTechGuy
TheTechGuy

Reputation: 17374

Submit form to a non default page

I solved this problem in another instance by making some workaround but I want to get it clear this time as I understand my problem better.

My asp.net net page has a search functionality that searches the database based on 5 fields. The result is displayed in the gridview. The gridview is editable and I can update values. The problem is if I want to update multiple values, gridview won't allow it. So I included an extra column for checkbox. I have added a footer which has link to update all checked records.

Ok so here is the problem? How do I send the whole gridview to another page where I can capture the gridview values?

By default the page is submitted onto itself. If I change the default action page, the whole gridview and search, nothing will work.

So how do I submit the whole page (or part of it) to a different page other than the default action script?

Upvotes: 1

Views: 107

Answers (2)

Erika Madja
Erika Madja

Reputation: 111

I have not tried this specifically with a gridview, but I think a Cross Page PostBack should work. I have a search feature on my website as well and this is what I use.

Set the PostBackUrl of the Button that is causing the PostBack to the Destination page. Let’s assume your source page is search.aspx and your destination page is SearchResult.aspx

Inside search.aspx:

<asp:Button ID="btnSearch" runat="server" Text="Search"  CssClass="right" 
    ValidationGroup = "Search"
    PostBackUrl="~/SearchResult.aspx"
    onclick="btnSearch_Click"/>

The form will be posted to SearchResult.aspx. Inside SearchResult.aspx, you add this directive:

<%@ PreviousPageType VirtualPath="~/Search.aspx"  %>

And in the code behind, you can acess any control like this:

PreviousPage.<mycontrol>

Hope this help.

Upvotes: 1

Hanlet Esca&#241;o
Hanlet Esca&#241;o

Reputation: 17380

Have you tried using the Session? Just add the DataSource, or the Gridview itself to the Session and load it in the other Page and then Dispose() it.

Good luck!

UPDATE:

I have accomplished this in the past through Cross-Page Posting. This is how I did it now for testing purposes:

Default.aspx:

<asp:Button  ID="Button1" runat="server" Text="Button" onclick="Button1_Click" PostBackUrl="SearchResult.aspx" />

SearchResult.aspx.cs:

 protected void Page_Init(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            if (Page.PreviousPage.FindControl("GridView1") != null)
            {
                GridView grid = (GridView)Page.PreviousPage.FindControl("GridView1");
                grid.ID = "myGrid";
                this.form1.Controls.Add(grid);
            }
        }
    }

Hopefully this helps.

Upvotes: 1

Related Questions