ナレッジベース
[True DBGrid for Windows Forms] 行番号を表示するには?
対象製品
ComponentOne Studio 2010J
詳細
True DBGrid for .NETには自動的に行番号を表示するような機能は実装されていません。また、レコードセレクタ部分にデータを表示することはできません。そのため、非連結列を用意し、非連結列にコードから行番号を設定する方法で対応します。
◎サンプルコード(VB)
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// データの設定
// ...
// 非連結列を追加
C1.Win.C1TrueDBGrid.C1DataColumn co;
co = new C1.Win.C1TrueDBGrid.C1DataColumn();
co.Caption = "No";
c1TrueDBGrid1.Columns.Add(co);
// 非連結列を表示、先頭に移動
C1.Win.C1TrueDBGrid.C1DisplayColumn dc;
dc = this.c1TrueDBGrid1.Splits[0].DisplayColumns["No"];
dc.Visible = true;
dc.Width = 20;
c1TrueDBGrid1.Splits[0].DisplayColumns.RemoveAt(
c1TrueDBGrid1.Splits[0].DisplayColumns.IndexOf(dc));
c1TrueDBGrid1.Splits[0].DisplayColumns.Insert(0, dc);
}
// 非連結列に行番号を表示
private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "No")
{
// 1から行番号を表示
e.Value = Convert.ToString(e.Row + 1);
}
}
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
...
' 非連結列を追加
Dim co As New C1.Win.C1TrueDBGrid.C1DataColumn
co.Caption = "No"
C1TrueDBGrid1.Columns.Add(co)
' 非連結列を表示、先頭に移動
Dim dc As C1.Win.C1TrueDBGrid.C1DisplayColumn
dc = C1TrueDBGrid1.Splits(0).DisplayColumns("No")
dc.Visible = True
dc.Width = 20
C1TrueDBGrid1.Splits(0).DisplayColumns.RemoveAt(C1TrueDBGrid1.Splits(0).DisplayColumns.IndexOf(dc))
C1TrueDBGrid1.Splits(0).DisplayColumns.Insert(0, dc)
End Sub
' 非連結列に行番号を表示
Private Sub C1TrueDBGrid1_UnboundColumnFetch(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnFetch
If e.Column.Caption = "No" Then
' 1から行番号を表示
e.Value = e.Row + 1
End If
End Sub
...
' 非連結列を追加
Dim co As New C1.Win.C1TrueDBGrid.C1DataColumn
co.Caption = "No"
C1TrueDBGrid1.Columns.Add(co)
' 非連結列を表示、先頭に移動
Dim dc As C1.Win.C1TrueDBGrid.C1DisplayColumn
dc = C1TrueDBGrid1.Splits(0).DisplayColumns("No")
dc.Visible = True
dc.Width = 20
C1TrueDBGrid1.Splits(0).DisplayColumns.RemoveAt(C1TrueDBGrid1.Splits(0).DisplayColumns.IndexOf(dc))
C1TrueDBGrid1.Splits(0).DisplayColumns.Insert(0, dc)
End Sub
' 非連結列に行番号を表示
Private Sub C1TrueDBGrid1_UnboundColumnFetch(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnFetch
If e.Column.Caption = "No" Then
' 1から行番号を表示
e.Value = e.Row + 1
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// データの設定
// ...
// 非連結列を追加
C1.Win.C1TrueDBGrid.C1DataColumn co;
co = new C1.Win.C1TrueDBGrid.C1DataColumn();
co.Caption = "No";
c1TrueDBGrid1.Columns.Add(co);
// 非連結列を表示、先頭に移動
C1.Win.C1TrueDBGrid.C1DisplayColumn dc;
dc = this.c1TrueDBGrid1.Splits[0].DisplayColumns["No"];
dc.Visible = true;
dc.Width = 20;
c1TrueDBGrid1.Splits[0].DisplayColumns.RemoveAt(
c1TrueDBGrid1.Splits[0].DisplayColumns.IndexOf(dc));
c1TrueDBGrid1.Splits[0].DisplayColumns.Insert(0, dc);
}
// 非連結列に行番号を表示
private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "No")
{
// 1から行番号を表示
e.Value = Convert.ToString(e.Row + 1);
}
}


