1

我正在使用visual web developer 2010 在asp.net 中开发我的网站。我有一个在线商店的产品页面,其中显示产品图片,gridview 显示有关产品的信息,每个产品都有多个列。

我为此页面设置代码的方式是我有 autogeneratecolumns = true (出于特定原因),主要是因为我从许多不同的表和数百个不同的产品和类别中动态提取 gridview 数据。这一切都很好,直到我将“添加到购物车”按钮添加到网格视图中,以便每一行都有一个按钮。

因为我将 autogeneratecolumns 设置为 true,所以当我插入“添加到购物车”按钮时,尚未创建任何列,因此该按钮显示在第一列中,然后是其余数据。我有一段代码在预渲染阶段运行,它采用按钮列并将其移动到最后一列。这就是问题所在。

出于某种原因,即使我将所有这些预渲染代码放在如果不是回发中,当在页面上单击另一张图片并且页面进行回发时,我的列标题也会更改并且“添加到购物车”列不再存在这会产生问题。在我单击另一张图片之前列如何的示例是(订单号、描述、价格、添加到购物车)以及在我单击图片之后(颜色、度数、描述、价格)。就好像它仍在运行 Gridview Pre Render,即使它显示它在调试期间跳过了该代码块。这是代码...

 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

我知道是这段代码导致了它,因为我删除了代码并且一切正常,但是这段代码是将购物车按钮列移动到gridview中的最后一列的唯一解决方案。很抱歉这个非常长的问题,但是对于如何防止我的列在单击图像按钮时发生更改或移动的任何帮助将不胜感激。

4

1 回答 1

0

以为我会继续发布我为解决这个问题所做的事情。我从来没有最终弄清楚究竟是什么导致了这个问题,但我最终在我所有的图像周围添加了一个更新面板,这似乎解决了这个问题。

于 2015-02-11T19:39:30.987 回答