fc2ブログ

記事一覧

ListViewの行インデックスを取得する方法 | asp.net


今回は asp.net にて ListView の現在編集している行のインデックスを取得する方法をご紹介いたします。
aspx側で取得する方法はよく紹介されていますが、VB(C#)側での取得方法を調べるのには少し苦労しました。



前提条件
・Windows 7 Professional 以降 / Windows Server 2008 R2 以降
・Visual Studio 2008 Professional 以降
・VB.NET
・.Net Framework 3.5 以降



1.aspxファイルに記述する方法

aspx側では以下のように記述することもできますが、コードビハインド部分で取得することはできません。
<ItemTemplate>
<asp:Label ID="lblIndex" Text='<%# Container.DisplayIndex + 1 %>' runat="server" />
</ItemTemplate>



2.aspx.vbファイルに記述する方法

以下のようにテキストボックスオブジェクトを取得し、その Parent にて ListViewDataItem が取得することができます。そのDisplayIndexにて表示行インデックスが取得することができます。ListViewの中の記述されかたにもよりますが、基本的には1~2階層上の親がListViewDataItemとなっていることが多いと思いますので、固定で textBox.Parent.Parent などと記述しても良いかもしれませんが、あくまでPG修正や仕様変更などを見越して記述しています。

Imports System.Web.UI.WebControls
'''<summary>
'''ListViewのコントロールオブジェクトから現在編集している行のインデックスを取得する
'''</summary>
'''<param name="sender">コントロール</param>
'''<returns>行インデックス</returns>
'''<remarks></remarks>
Private Function GetSelectedIndex(ByVal sender As Object) As Integer
Dim index As Integer = 0
Dim textBox As TextBox = DirectCast(sender, TextBox)
Dim ctrl As System.Web.UI.Control = textBox.Parent
'親のコントロールが見つかるまでループする
For i As Integer = 0 To 10
'ListViewDataItemが見つかった時点でループ終了
If TypeOf ctrl Is ListViewDataItem Then
Exit For
End If
ctrl = ctrl.Parent
Next i
Dim parentItem As ListViewDataItem = TryCast(ctrl, ListViewDataItem)
If Not parentItem Is Nothing Then
'表示インデックスを取得する
index = parentItem.DisplayIndex
End If
Return index
End Function

'使用方法
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim index As Integer = Me.GetSelectedIndex(sender)
End Sub

※System.Web.Extensionsの参照設定が必要です。



3.Windows.Formsでの記述方法

ネットに散乱している情報を精査するためにも、念のためお伝えします。
System.Windows.Forms の ListView では SelectedItems(0).Index と記述するとインデックスが取得できますが、asp.net ではそのようなメソッドはありませんので、使用できません。





最後までお読みいただきありがとうございます。
いかがでしたでしょうか。他にも asp.net に関連する記事を投稿しておりますのでよろしければご参考くださいませ。


関連記事

コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。