2011-03-08 20 views
0

我想要一個的ImageUrl在模板場GridView的圖像,但不斷收到錯誤:未設置爲一個對象的實例的GridView的RowDataBound訪問數據項vb的

對象引用。在這條線:

昏暗的ImagePath的String = rowView(「IMAGE_PATH」)

我從來沒有在一個GridView這樣做過,但有它工作的一個ListView。

感謝所有幫助我的繼承人代碼:

.APSX

 <asp:GridView ID="gvImages" DataKeyNames="id" runat="server" AutoGenerateColumns="False" BorderWidth="0px" GridLines="None"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="imageId" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Image ID="imageFile" runat="server"></asp:Image> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="id" /> 
     </Columns> 
    </asp:GridView> 

後面的代碼

Protected Sub gvImages_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvImages.RowDataBound 

    Dim rowView As DataRowView = CType(e.Row.DataItem, DataRowView) 

    Dim imagePath As String = rowView("image_path") 

    Dim strImageUrl As String = "~/admin/images/cases/" & Request.QueryString("uid") & "/" & imagePath 

    Dim imageFile As System.Web.UI.WebControls.Image = CType(e.Row.FindControl("imageFile"), System.Web.UI.WebControls.Image) 
    imageFile.ImageUrl = strImageUrl 

End Sub 
+0

你確定rowView(「image_path」)沒有返回DBNULL。 – 2011-03-08 12:35:07

+0

它保存圖像的名稱,以便再次檢查我剛刪除圖像模板字段並將image_path添加到數據綁定字段並顯示圖像名稱。所以不能這樣。 – JBoom 2011-03-08 12:51:48

+0

查看更新的答案 – 2011-03-08 13:08:42

回答

2

我認爲你需要檢查它的數據行而不是標題行

試試這個

Protected Sub gvImages_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvImages.RowDataBound 

    If e.Row.RowType = DataControlRowType.DataRow Then 

     Dim rowView As DataRowView = CType(e.Row.DataItem, DataRowView) 

     Dim imagePath As String = rowView("image_path") 

     Dim strImageUrl As String = "~/admin/images/cases/" & Request.QueryString("uid") & "/" & imagePath 

     Dim imageFile As System.Web.UI.WebControls.Image = CType(e.Row.FindControl("imageFile"), System.Web.UI.WebControls.Image) 
     imageFile.ImageUrl = strImageUrl 

    End If 
End Sub 
+0

啊,感謝Nicky,這是排序它,我曾經看到類似的東西時搜索,但沒有意識到這是必須的。謝謝。 J. – JBoom 2011-03-08 13:25:54

+0

我過去很多次被絆倒了,所以沒問題。 – 2011-03-08 13:31:46

0

嘗試

Dim imagePath As String = e.rowView("image_path").ToString() 

如果與網格綁定表有列 「IMAGE_PATH」,然後代替如果你想建立一些custome字符串中使用更簡單的方法....

<asp:Image id="img1" runat="server" imageUrl = '<%#Eval("image_path")%>' />

imageurl = '<%# String.Format("{0} - {1} - {2} - {3}", Eval("Name1"), Eval("Name2"), Session["abc"],Request["abc"]) %>' 
+0

nope,無法正常工作,我得到一個intellisense錯誤,說rowView不是....的成員,但如果我脫掉電子。智能感知錯誤消失了,但是我仍然在瀏覽器中看到同樣的錯誤。 – JBoom 2011-03-08 13:02:31

+0

嗨AmRan,是的,我得到的工作很好,但我正在學習.net,並想知道如何從代碼背後做,因爲我相信我將不得不在未來做到這一點。 – JBoom 2011-03-08 13:22:54