我正在使用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的最后一列。对不起,对于非常长的问题,但如何防止我的列改变或移动时点击图像按钮的任何帮助,将不胜感激。
如果此代码位于“FormView1”窗体上,那么您可以使用“Me”而不是“FormView”访问事物。你调试了吗? – OneFineDay 2015-02-05 22:05:37
是的,有条件,如果不是回发,在初始页面加载后,当我点击图像时,它会跳过if语句中的所有代码,但列在第一张图片上仍然会更改。这是他们唯一改变的时间,他们在第一次之后没有改变任何点击。我已经全部删除了代码,除了我的“添加到购物车”列在第一列而非最后一列之外,一切都很好。 – user3841709 2015-02-05 22:14:30