Может ли PostbackUrl быть установлен для GridView CommandField? - PullRequest
0 голосов
/ 02 декабря 2008

На моей странице есть элемент управления GridView, для которого я определил несколько полей BoundFields. В каждой строке привязанного к базе данных GridView есть CommandField (Выбрать), для которого я хочу отправить PostBack на новую страницу.

Конечно, я мог бы легко отправить NewSelectedIndex в QueryString, но я бы предпочел скрыть эту информацию от пользователя. Предложения?

Ответы [ 3 ]

1 голос
/ 02 декабря 2008

Леппи права. GridView не имеет свойства PostbackUrl. Однако вы можете делать то, что хотите, используя стандартный элемент управления, который имеет свойство PostbackUrl.

<asp:TemplateField AccessibleHeaderText="Edit">
    <ItemTemplate>
        <asp:Button runat="server" ID="btnEdit" PostBackUrl="~/Default.aspx" OnClientClick='form1.ActivityId.value = this.Tag;' Tag='<%# Eval("ActivityId") %>' Text="Edit"/>
    </ItemTemplate>
</asp:TemplateField>

В этом примере кода я добавил TemplateColumn в GridView. Я использую динамически добавленный атрибут Tag для кнопки для передачи идентификатора, затем я использую код Javascript для помещения значения в скрытое поле, а затем кнопка просто выполняет обратную передачу на страницу, указанную в свойстве PostbackUrl.

0 голосов
/ 21 мая 2009

Спасибо, Серджиу Дамиан.

Я использую MasterPages, и скрытое поле UniqueID может отличаться. Мне нужно опубликовать два значения.
В случае Gridview_RowDataBound я поместил этот код:

If e.Row.RowType = DataControlRowType.DataRow Then
   e.Row.Cells(12).Text = ""
   Dim img As New WebControls.ImageButton
   img.PostBackUrl = "NecesidadesPostBack.aspx"
   img.ImageUrl = "imagenes/edit.png"
   img.OnClientClick = HDLB.UniqueID.ToString & ".value = '" & e.Row.Cells(0).Text & "'; " & HDPT.UniqueID.ToString & ".value = '" & e.Row.Cells(1).Text & "';"
   img.AlternateText = "Edit"
   e.Row.Cells(12).Controls.Add(img)
End If

У меня есть 2 скрытых поля (HDLB и HDPT). Событие OnClientClick изменяет значение этого скрытого поля со значением первой и второй ячейки в сетке.

0 голосов
/ 02 декабря 2008

Используйте столбец HyperLinkField в GridView:

<asp:HyperLinkField AccessibleHeaderText="Edit" DataNavigateUrlFields="ActivityId" DataNavigateUrlFormatString="AcitivtyEdit.aspx?id={0}" Text="Edit Activity" />

Конечно, как вы сказали, эта опция показывает идентификатор в URL. Чтобы скрыть это (хотя любой может проверить ваш javascript и посмотреть, что вы делаете), у вас есть два варианта: 1. Используйте код Javascript, чтобы установить скрытое поле с идентификатором, изменить адрес обратной передачи формы (действия) и затем отправить форму. Вы должны разрешить своему сайту asp.net разрешить обратную передачу с другой страницы 2. Разрешите Команде выполнять обратную передачу на ту же страницу, на которой размещен GridView и в обработчике событий на стороне сервера, на сервер. Перенос на вашу страницу (эта опция создает другие проблемы при последовательных обратных передачах ...)

...