作成日: 2014/09/26 最終更新日: 2014/09/26
文書種別
使用方法
詳細
非連結列はグリッドと接続しているデータソースに存在しない列です。1. 列のDataFieldプロパティが設定されていない、2. Captionプロパティが設定されている、この2つの条件が満たされれば、非連結列とみなされます。
[True DBGrid for WinForms ユーザーガイド]
- [True DBGrid for WinForms の使い方]
- [データ連結]
- [非連結列]
非連結列の値はUnboundColumnFetchイベントで設定します。ユーザーが非連結列のデータを変更した後にもUnboundColumnFetchイベントが発生します。非連結列での編集を許可している場合、UnboundColumnFetchイベントで設定している元の値を変更しない限り、ユーザーが入力した値は上書きされてしまいます。非連結列の値を変更する場合は、UnboundColumnFetchイベントで設定している元の値をユーザーが入力した値に変更する必要があります。UnboundColumnFetchイベントは一度だけではなく、非連結列にあるセルの値を表示する必要がある場合に何度も発生することに注意してください。
◎サンプルコード(VB)
◎サンプルコード(C#)
[True DBGrid for WinForms ユーザーガイド]
- [True DBGrid for WinForms の使い方]
- [データ連結]
- [非連結列]
非連結列の値はUnboundColumnFetchイベントで設定します。ユーザーが非連結列のデータを変更した後にもUnboundColumnFetchイベントが発生します。非連結列での編集を許可している場合、UnboundColumnFetchイベントで設定している元の値を変更しない限り、ユーザーが入力した値は上書きされてしまいます。非連結列の値を変更する場合は、UnboundColumnFetchイベントで設定している元の値をユーザーが入力した値に変更する必要があります。UnboundColumnFetchイベントは一度だけではなく、非連結列にあるセルの値を表示する必要がある場合に何度も発生することに注意してください。
◎サンプルコード(VB)
' 非連結列の値を保持するHashtable
Dim _hash As New Hashtable()
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 = "Unbound"
C1TrueDBGrid1.Columns.Add(co)
' 非連結列を表示、先頭に移動
Dim dc As C1.Win.C1TrueDBGrid.C1DisplayColumn
dc = C1TrueDBGrid1.Splits(0).DisplayColumns("Unbound")
dc.Visible = True
dc.Locked = False
With C1TrueDBGrid1.Splits(0).DisplayColumns
.RemoveAt(.IndexOf(dc))
.Insert(0, dc)
End With
End Sub
' Hashtableからデータを取得し、非連結列に表示
Private Sub C1TrueDBGrid1_UnboundColumnFetch(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnFetch
If e.Column.Caption = "Unbound" Then
e.Value = _hash(e.Row)
End If
End Sub
' ユーザーが変更した値をHashtableに保存
Private Sub C1TrueDBGrid1_UnboundColumnUpdated(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnUpdated
If e.Column.Caption = "Unbound" Then
_hash(e.Row) = e.Value
End If
End Sub
Dim _hash As New Hashtable()
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 = "Unbound"
C1TrueDBGrid1.Columns.Add(co)
' 非連結列を表示、先頭に移動
Dim dc As C1.Win.C1TrueDBGrid.C1DisplayColumn
dc = C1TrueDBGrid1.Splits(0).DisplayColumns("Unbound")
dc.Visible = True
dc.Locked = False
With C1TrueDBGrid1.Splits(0).DisplayColumns
.RemoveAt(.IndexOf(dc))
.Insert(0, dc)
End With
End Sub
' Hashtableからデータを取得し、非連結列に表示
Private Sub C1TrueDBGrid1_UnboundColumnFetch(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnFetch
If e.Column.Caption = "Unbound" Then
e.Value = _hash(e.Row)
End If
End Sub
' ユーザーが変更した値をHashtableに保存
Private Sub C1TrueDBGrid1_UnboundColumnUpdated(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnUpdated
If e.Column.Caption = "Unbound" Then
_hash(e.Row) = e.Value
End If
End Sub
◎サンプルコード(C#)
// 非連結列の値を保持するHashtable
System.Collections.Hashtable _hash = new System.Collections.Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
...
// 非連結列を作成
C1.Win.C1TrueDBGrid.C1DataColumn co;
co = new C1.Win.C1TrueDBGrid.C1DataColumn();
co.Caption = "Unbound";
c1TrueDBGrid1.Columns.Add(co);
// 非連結列を表示、先頭に移動
C1.Win.C1TrueDBGrid.C1DisplayColumn dc;
dc = this.c1TrueDBGrid1.Splits[0].DisplayColumns["Unbound"];
dc.Visible = true;
dc.Locked = false;
c1TrueDBGrid1.Splits[0].DisplayColumns.RemoveAt(
c1TrueDBGrid1.Splits[0].DisplayColumns.IndexOf(dc));
c1TrueDBGrid1.Splits[0].DisplayColumns.Insert(0, dc);
}
// Hashtableからデータを取得し、非連結列に表示
private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "Unbound")
{
e.Value = (string)_hash[e.Row];
}
}
// ユーザーが変更した値をHashtableに保存
private void c1TrueDBGrid1_UnboundColumnUpdated(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "Unbound")
{
_hash[e.Row] = e.Value;
}
}
System.Collections.Hashtable _hash = new System.Collections.Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
...
// 非連結列を作成
C1.Win.C1TrueDBGrid.C1DataColumn co;
co = new C1.Win.C1TrueDBGrid.C1DataColumn();
co.Caption = "Unbound";
c1TrueDBGrid1.Columns.Add(co);
// 非連結列を表示、先頭に移動
C1.Win.C1TrueDBGrid.C1DisplayColumn dc;
dc = this.c1TrueDBGrid1.Splits[0].DisplayColumns["Unbound"];
dc.Visible = true;
dc.Locked = false;
c1TrueDBGrid1.Splits[0].DisplayColumns.RemoveAt(
c1TrueDBGrid1.Splits[0].DisplayColumns.IndexOf(dc));
c1TrueDBGrid1.Splits[0].DisplayColumns.Insert(0, dc);
}
// Hashtableからデータを取得し、非連結列に表示
private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "Unbound")
{
e.Value = (string)_hash[e.Row];
}
}
// ユーザーが変更した値をHashtableに保存
private void c1TrueDBGrid1_UnboundColumnUpdated(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
{
if (e.Column.Caption == "Unbound")
{
_hash[e.Row] = e.Value;
}
}
旧文書番号
69950