Отправить форму на страницу не по умолчанию - PullRequest
1 голос
/ 07 февраля 2012

Я решил эту проблему в другом случае, сделав обходной путь, но на этот раз я хочу прояснить ситуацию, поскольку лучше понимаю свою проблему.

Моя сетевая страница asp.net имеет функцию поиска, которая выполняет поиск в базе данных на основе 5 полей. Результат отображается в виде сетки. Вид сетки можно редактировать, и я могу обновлять значения. Проблема в том, что если я хочу обновить несколько значений, gridview не позволит этого. Поэтому я включил дополнительный столбец для флажка. Я добавил нижний колонтитул со ссылкой для обновления всех проверенных записей.

Хорошо, вот в чем проблема? Как отправить весь просмотр сетки на другую страницу, где я могу зафиксировать значения сетки?

По умолчанию страница отправляется на себя. Если я изменю страницу действий по умолчанию, весь просмотр сетки и поиск, ничего не будет работать.

Итак, как мне отправить всю страницу (или ее часть) на другую страницу, отличную от скрипта действия по умолчанию?

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Я не пробовал это специально с gridview, но я думаю, что Cross Page PostBack должен работать. У меня есть функция поиска на моем сайте, и это то, что я использую.

Установите PostBackUrl кнопки, которая вызывает PostBack, на целевую страницу. Предположим, что вашей исходной страницей является search.aspx, а целевой страницей является SearchResult.aspx

Внутри search.aspx:

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

Форма будет размещена на SearchResult.aspx. Внутри SearchResult.aspx вы добавляете эту директиву:

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

А в следующем коде вы можете получить доступ к любому элементу управления следующим образом:

PreviousPage.<mycontrol>

Надеюсь, эта помощь.

1 голос
/ 07 февраля 2012

Вы пробовали использовать Session?Просто добавьте DataSource или Gridview к Session и загрузите его на другую страницу, а затем Dispose().

Удачи!

ОБНОВЛЕНИЕ:

Я достиг этого в прошлом с помощью Кросс-страничка .Вот как я это сделал сейчас для целей тестирования:

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);
            }
        }
    }

Надеюсь, это поможет.

...