Gridview列在回发时更改

时间:2015-02-05 21:28:06

标签: asp.net vb.net gridview autogeneratecolumn

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

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

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

出于某种原因,即使我将所有这些预渲染代码放在if不回发中,当在页面上单击另一张图片并且页面进行回发时,我的列标题也会更改,并且“添加到购物车”列是不再存在造成问题的地方。我点击另一张图片之前列的示例是(订单号,说明,价格,添加到购物车)和点击图片后(颜色,度,描述,价格)。这就像它仍在运行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中最后一列的解决方案。很抱歉非常长的问题,但是如果在点击图像按钮时如何防止我的列更改或移动的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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