Я разрабатываю свой веб-сайт в asp.net с помощью визуального веб-разработчика 2010. У меня есть страница продукта для интернет-магазина, где отображаются изображения продукта, а в представлении сетки отображается информация о продукте, для каждого продукта есть несколько столбцов.
То, как я настроил свой код для этой страницы, заключается в том, что у меня есть autogeneratecolumns = true (по определенным причинам), главным образом потому, что я динамически извлекаю данные gridview из множества разных таблиц и сотен различных продуктов и категорий. Все это работает нормально до того момента, когда я добавляю кнопку «Добавить в корзину» в вид сетки, чтобы в каждой строке была кнопка.
Поскольку для autogeneratecolumns установлено значение true, когда я вставляю кнопку «Добавить в корзину», ни один из столбцов еще не создается, поэтому кнопка отображается в первом столбце, за которым следуют остальные данные. У меня есть блок кода, который выполняется на этапе предварительного рендеринга, который берет столбец кнопок и перемещает его в самый последний столбец. В ЭТОМ проблема.
По какой-то причине, даже когда я помещаю весь этот код предварительного рендеринга в постбэк, если не щелкнуть другое изображение на странице, и страница выполняет обратную передачу, заголовки моих столбцов меняются, а столбца «Добавить в корзину» больше нет. что создает проблемы. Пример того, как выглядят столбцы до того, как я нажму на другое изображение: (Заказ №, Описание, Цена, Добавить в корзину) и после того, как я нажму на изображение (Цвет, Степени, Описание, Цена). Это похоже на то, что он все еще запускает предварительный рендеринг Gridview, даже если он показывает, что пропускает этот блок кода во время отладки. Вот код...
Protected Sub GridView1_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim GridView1 As GridView = FormView1.FindControl("GridView1")
If Not IsPostBack Then
For Each row As GridViewRow In GridView1.Controls(0).Controls
Dim tc As TableCell = row.Cells(0)
row.Cells.Add(tc)
Next
Else
End If
End Sub
Protected Sub ImageButton3_Click1(sender As Object, e As System.Web.UI.ImageClickEventArgs)
Dim img As System.Web.UI.WebControls.Image = FormView1.FindControl("Image1")
Dim img1 As ImageButton = FormView1.FindControl("ImageButton3")
Dim url As String = img.ImageUrl
img.ImageUrl = img1.ImageUrl
img1.ImageUrl = url
End Sub
Я знаю, что причиной этого является этот код, потому что я удалил код, и все заработало как надо, однако этот код — единственное решение, которое я смог придумать, чтобы переместить столбец кнопки корзины в самый последний столбец в представлении сетки. Извините за очень длинный вопрос, но любая помощь в том, как предотвратить изменение или смещение моих столбцов при нажатии кнопки изображения, будет оценена по достоинству.
FormView1
, то вы получаете доступ к вещам с помощьюMe
, а неFormView
. Вы его отладили? - person OneFineDay   schedule 06.02.2015