マルチコンボボックス型セルは、コンボボックス型セルと同様に選択項目を示すドロップダウンリストを表示し、ユーザーは任意の項目を選択できます。ただし、マルチコンボボックス型セルは、ドロップダウンリストを複数列で表示します。
このセル型の作成や設定は、MultiColumnComboBoxCellType クラスを使用して行われます。
マルチコンボボックス型セルのドロップダウンリストの項目を設定するには、セルをデータソースに連結する必要があります。データソースに連結するには、以下のプロパティを使用します。
複数列のうち、どの列を編集対象(セルに表示)するかは、ColumnEdit プロパティまたはColumnEditName プロパティを使用して設定します。どの列をセルのValue プロパティとして取得できる値とするかは、DataColumn プロパティまたはDataColumnName プロパティで指定します。
また、リストボックスの表示位置やサイズ、各列の幅も設定可能で、以下のプロパティを使用します。
設定方法
- MultiColumnComboBoxCellType クラスのインスタンスを作成し、マルチカラムコンボボックス型セルを定義します。
- 連結するデータソースを作成します。
- DataSource あるいはDataSourceID プロパティを使用してセルとデータソースを連結します。
- 表示する列および値として扱う列をを設定します。
- このセル型をセルに割り当てます。
サンプルコード
次のサンプルコードは、マルチカラムコンボボックス型セルを表示します。
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
FarPoint.Web.Spread.MultiColumnComboBoxCellType mcombo = new FarPoint.Web.Spread.MultiColumnComboBoxCellType();
mcombo.DataSource = CreateDataSource();
mcombo.DataColumnName = "No";
mcombo.ColumnEditName = "Item1";
mcombo.ShowButton = true;
mcombo.ListWidth = 250;
mcombo.UseValue = true;
FpSpread1.Sheets[0].Columns[0].CellType = mcombo;
}
public System.Data.DataSet CreateDataSource()
{
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.DataTable dt = null;
System.Data.DataRow dr = null;
int i = 0;
dt = new System.Data.DataTable();
dt.Columns.Add(new System.Data.DataColumn("No", typeof(int)));
dt.Columns.Add(new System.Data.DataColumn("Item1", typeof(string)));
for (i = 1; i <= 5; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "Item" + i.ToString();
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
Dim mcombo As New FarPoint.Web.Spread.MultiColumnComboBoxCellType()
mcombo.DataSource = CreateDataSource()
mcombo.DataColumnName = "No"
mcombo.ColumnEditName = "Item1"
mcombo.ShowButton = True
mcombo.ListWidth = 250
mcombo.UseValue = True
FpSpread1.Sheets(0).Columns(0).CellType = mcombo
End Sub
Function CreateDataSource() As Data.DataSet
Dim ds As New Data.DataSet
Dim dt As Data.DataTable
Dim dr As Data.DataRow
Dim i As Integer
dt = New Data.DataTable
dt.Columns.Add(New Data.DataColumn("No", GetType(Integer)))
dt.Columns.Add(New Data.DataColumn("Item1", GetType(String)))
For i = 1 To 5
dr = dt.NewRow()
dr(0) = i
dr(1) = "Item" + i.ToString()
dt.Rows.Add(dr)
Next
ds.Tables.Add(dt)
Return ds
End Function
関連トピック