2015-02-05 30 views
1

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

我为这个页面设置了我的代码的方式是我有autogeneratecolumns = true(出于具体的原因),主要是因为我从许多不同的表和数百种不同的产品和类别动态拉动gridview数据。这一切都正常工作,直到我添加到我的“添加到购物车”按钮到gridview,以便每行都有一个按钮。

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

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

+0

如果此代码位于“FormView1”窗体上,那么您可以使用“Me”而不是“FormView”访问事物。你调试了吗? – OneFineDay 2015-02-05 22:05:37

+0

是的,有条件,如果不是回发,在初始页面加载后,当我点击图像时,它会跳过if语句中的所有代码,但列在第一张图片上仍然会更改。这是他们唯一改变的时间,他们在第一次之后没有改变任何点击。我已经全部删除了代码,除了我的“添加到购物车”列在第一列而非最后一列之外,一切都很好。 – user3841709 2015-02-05 22:14:30

回答

0

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