none
ListView Subitem 問題 RRS feed

  • 問題

  • ListView 表:

    DateTime | Name | Status

    00:00:00 | item1 |  OK

    00:00:00 | item1 |  Failed

    00:00:00 | item1 |  OK

    00:00:00 | item1 |  OK

    00:00:00 | item1 |  Failed

    -----------------------------------------

    要怎麼抓取 Status:Failed 的 Item 總數??

            For i As Integer = 0 To RecordsList.Items.Count - 1
                Dim t As ListViewItem = RecordsList.Items(i)
                If t.SubItems(2).Text = "Failed" Then
                    txtFailedRecords.Text = "Failed : " & t.SubItems.Count
                End If
            Next

    2012年3月4日 上午 08:25

解答

  • 您可以考慮這篇文章製作的ListViewPlus控制項:detecting changes in listview

    2012年3月4日 上午 10:08
  • 或許你也可以在ListView的ItemDataBound事件中計算你要的總數。

    下列程式碼以Northwind資料庫的Customers資料表為例,計算Country等於UK的總數,有興趣可以參考看看。

    Imports System.Data.SqlClient
    
    Public Class ListViewDemo
        Inherits System.Web.UI.Page
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim builder As New SqlConnectionStringBuilder With {.DataSource = ".", .InitialCatalog = "Northwind", .IntegratedSecurity = True}
            Using con As New SqlConnection(builder.ToString())
                If con.State <> ConnectionState.Open Then con.Open()
                Using Adapter As New SqlDataAdapter("select * from Customers", con)
                    Dim dt As New DataTable
                    Adapter.Fill(dt)
                    ListView1.DataSource = dt
                    ListView1.DataBind()
                End Using
            End Using
            Response.Write(count)
        End Sub
    
        Dim count As Integer = 0
        Protected Sub ListView1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
            If DataBinder.Eval(e.Item.DataItem, "Country").ToString() = "UK" Then
                count += 1
            End If
        End Sub
    End Class


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月4日 上午 11:38
  • 總要用個變數去記錄吧?

            Dim count As Integer = 0
            For i As Integer = 0 To RecordsList.Items.Count - 1
                Dim t As ListViewItem = RecordsList.Items(i)
                If t.SubItems(2).Text.ToUpper().Equals("FAILED") Then
                    count += 1
                End If
            Next
            txtFailedRecords.Text = String.Format("Failed : {0}", count)


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年3月4日 下午 02:14

所有回覆

  • 您可以考慮這篇文章製作的ListViewPlus控制項:detecting changes in listview

    2012年3月4日 上午 10:08
  • 或許你也可以在ListView的ItemDataBound事件中計算你要的總數。

    下列程式碼以Northwind資料庫的Customers資料表為例,計算Country等於UK的總數,有興趣可以參考看看。

    Imports System.Data.SqlClient
    
    Public Class ListViewDemo
        Inherits System.Web.UI.Page
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim builder As New SqlConnectionStringBuilder With {.DataSource = ".", .InitialCatalog = "Northwind", .IntegratedSecurity = True}
            Using con As New SqlConnection(builder.ToString())
                If con.State <> ConnectionState.Open Then con.Open()
                Using Adapter As New SqlDataAdapter("select * from Customers", con)
                    Dim dt As New DataTable
                    Adapter.Fill(dt)
                    ListView1.DataSource = dt
                    ListView1.DataBind()
                End Using
            End Using
            Response.Write(count)
        End Sub
    
        Dim count As Integer = 0
        Protected Sub ListView1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
            If DataBinder.Eval(e.Item.DataItem, "Country").ToString() = "UK" Then
                count += 1
            End If
        End Sub
    End Class


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月4日 上午 11:38
  • 總要用個變數去記錄吧?

            Dim count As Integer = 0
            For i As Integer = 0 To RecordsList.Items.Count - 1
                Dim t As ListViewItem = RecordsList.Items(i)
                If t.SubItems(2).Text.ToUpper().Equals("FAILED") Then
                    count += 1
                End If
            Next
            txtFailedRecords.Text = String.Format("Failed : {0}", count)


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2012年3月4日 下午 02:14
  • 這篇很有趣,網友分別用了三種方法。

    這也就是說,路不是只有一條,選擇自己熟悉的路以外,也走走看別的路,未來再碰上這種岔路,你就可以走得更快或是走得更好。


    T.L. Cheng

    2012年3月10日 上午 04:02
    版主