2009-07-16 54 views
0

關於的ItemDataBound我已經在頁面加載直放站

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      GetDetails() 
      PopulateRepeater() 
     End If 
    End Sub 

Sub PopulateRepeater() 
     Dim dt As DataTable = GetDetails() 
     Dim dtDoc As DataTable = objdoc.GetDocDetails(Session("RegID")) 
     If dtDoc.Rows.Count > 0 Then 
      Dim strUserName As String = dt.Rows(0)("Name") 
      Dim files As IList(Of FileInfo) = New List(Of FileInfo)() 
      Dim filters As String = "*.jpg;*.png;*.gif" 
      For Each filter As String In filters.Split(";"c) 
       Dim fit As FileInfo() = New DirectoryInfo(Me.Server.MapPath("../SiteImages/" & strUserName & "/" & Session("RegID") & "/")).GetFiles(filter) 
       For Each fi As FileInfo In fit 
        files.Add(fi) 
       Next 
      Next 
      strPath = Server.MapPath("../SiteImages/" & strUserName & "/" & Session("RegID") & "/") 
      Me.Repeater1.DataSource = files 
      Me.Repeater1.DataBind() 
     End If 

     End Sub 

我有下面的代碼中的ItemDataBound

Dim ThViewr As Bright.WebControls.ThumbViewer = DirectCast(e.Item.FindControl("Th1"), Bright.WebControls.ThumbViewer) 
     Dim dtUser As DataTable = GetDetails() 
     Dim dtDoc As DataTable = objdoc.GetDocDetails(Session("RegID")) 
     Dim strUserName As String = dtUser.Rows(0)("Name") 
     If dtDoc.Rows.Count > 0 Then 
      For i As Integer = 0 To dtDoc.Rows.Count - 1 
       Dim ImagePath As String = "../SiteImages/" & strUserName & "/" & Session("RegID") & "/" + dtDoc.Rows(i)("ImageName") 
       ThViewr.ImageUrl = ImagePath 
      Next 

     End If 

我的aspx下面的代碼包含

<div style="clear:both;"> 
       <asp:Repeater ID="Repeater1" runat="server" > 
        <ItemTemplate> 
         <span style="padding:2px 10px 2px 10px"> 

          <bri:ThumbViewer Id="Th1" runat="server" Height="100px" Width="100px"/> 
         </span> 
        </ItemTemplate> 
       </asp:Repeater> 
      </div> 

如果的ImagePath =」。 ./SiteImages/Ram/PR/First.jpg「表示PR文件夾正好包含3個圖像,即First.jpg,Second.jpg和Third.jpg。

現在有了上面的代碼三個圖像來,但Third.jpg被重複3 times.First.jpg和Second.jpg不coming.Can人幫助解決這個問題。

回答

1

ItemDataBound事件是在綁定列表中的每個對象引發一次,所以它會被解僱,你的情況三次;每個文件一次。您不應該遍歷數據表,而是從事件參數中獲取當前項目。

更新:看代碼更接近我覺得有些困惑。將FileInfo對象的列表綁定到中繼器,但綁定項目時從DataTable獲取數據。我猜測,你想顯示找到的文件,我認爲在的ItemDataBound下面的代碼會爲你做的:

Dim ThViewr As Bright.WebControls.ThumbViewer = DirectCast(e.Item.FindControl("Th1"), Bright.WebControls.ThumbViewer) 
Dim dtUser As DataTable = GetDetails() 
Dim strUserName As String = dtUser.Rows(0)("Name") 
Dim ImagePath As String = "../SiteImages/" & strUserName & "/" & Session("RegID") & "/" + DirectCast(e.Item.DataItem, FileInfo).Name 
ThViewr.ImageUrl = ImagePath  
+0

u能顯示1如: – user42348 2009-07-16 07:11:16

+0

它worked.Thanks了很多。 – user42348 2009-07-16 07:34:38