2015-02-05 31 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

以爲我會繼續前進,併發布我所做的,使這個問題停止。我從來沒有確定究竟是什麼導致了這個問題,但我最終在我的所有圖像周圍添加了一個更新面板,這似乎解決了這個問題。