コンボおよびリストコントロールは、複合データバウンドコントロールとして使用できます。行ごとにスタイルを設定したり、Textプロパティやステータスバーに表示するカラムのインデックスを指定することも可能です。
using System; public partial class MultiColumn_DataSource : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { // カラムの設定をします。 GcComboBox1.ListBox.TextSubItemIndex = (int)GcNumber1.Integer; GcComboBox1.ListBox.DescriptionSubItemIndex = (int)GcNumber2.Integer; GcComboBox1.ListBox.DefaultColumn.Header.AllowResize = CheckBox1.Checked; GcComboBox1.ListBox.DefaultColumn.Header.Clickable = CheckBox2.Checked; GcListBox1.TextSubItemIndex = (int)GcNumber1.Integer; GcListBox1.DescriptionSubItemIndex = (int)GcNumber2.Integer; GcListBox1.DefaultColumn.Header.AllowResize = CheckBox1.Checked; GcListBox1.DefaultColumn.Header.Clickable = CheckBox2.Checked; } }
Partial Class MultiColumn_DataSource Inherits System.Web.UI.Page Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click ' カラムの設定をします。 GcComboBox1.ListBox.TextSubItemIndex = GcNumber1.Integer GcComboBox1.ListBox.DescriptionSubItemIndex = GcNumber2.Integer GcComboBox1.ListBox.DefaultColumn.Header.AllowResize = CheckBox1.Checked GcComboBox1.ListBox.DefaultColumn.Header.Clickable = CheckBox2.Checked GcListBox1.TextSubItemIndex = GcNumber1.Integer GcListBox1.DescriptionSubItemIndex = GcNumber2.Integer GcListBox1.DefaultColumn.Header.AllowResize = CheckBox1.Checked GcListBox1.DefaultColumn.Header.Clickable = CheckBox2.Checked End Sub End Class
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="DataSource.aspx.cs" Inherits="MultiColumn_DataSource" StylesheetTheme="SkinFile" %> <%@ Register assembly="GrapeCity.Web.Input.v100, Version=10.0.4009.2012, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMCombo" tagprefix="im_combo" %> <%@ Register assembly="GrapeCity.Web.Input.v100, Version=10.0.4009.2012, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMList" tagprefix="im_list" %> <%@ Register assembly="GrapeCity.Web.Input.v100, Version=10.0.4009.2012, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMNumber" tagprefix="im_number" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <script type="text/javascript"> // Textプロパティとして表示するカラムのインデックスを設定します。 function GcNumber1_ValueChanged(sender, eArgs) { if (!document.getElementById("isClient").checked) return; var list = FindIMControl("<% =GcComboBox1.ClientID %>").GetListBox(); list.SetTextSubItemIndex(sender.GetInteger()); FindIMControl("<% =GcListBox1.ClientID %>").SetTextSubItemIndex(sender.GetInteger()); } // ステータスバーに表示するカラムのインデックスを設定します。 function GcNumber2_ValueChanged(sender, eArgs) { if (!document.getElementById("isClient").checked) return; var list = FindIMControl("<% =GcComboBox1.ClientID %>").GetListBox(); list.SetDescriptionSubItemIndex(sender.GetInteger()); FindIMControl("<% =GcListBox1.ClientID %>").SetDescriptionSubItemIndex(sender.GetInteger()); } // カラムヘッダの幅サイズ変更を有効にするかどうか設定します。 function AllowResize(obj) { if (!document.getElementById("isClient").checked) return; var list = FindIMControl("<% =GcComboBox1.ClientID %>").GetListBox(); var comboColumn = list.GetDefaultColumnHeader(); var listColumn = FindIMControl("<% =GcListBox1.ClientID %>").GetDefaultColumnHeader(); comboColumn.SetAllowResize(obj.checked); listColumn.SetAllowResize(obj.checked); } // カラムヘッダクリックによるソートを有効にするかどうか設定します。 function Clickable(obj) { if (!document.getElementById("isClient").checked) return; var list = FindIMControl("<% =GcComboBox1.ClientID %>").GetListBox(); var comboColumn = list.GetDefaultColumnHeader(); var listColumn = FindIMControl("<% =GcListBox1.ClientID %>").GetDefaultColumnHeader(); comboColumn.SetClickable(obj.checked); listColumn.SetClickable(obj.checked); } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Sample.mdb" SelectCommand="SELECT [会社名], [郵便番号], [住所1], [住所2] , [TEL] FROM [会社]"> </asp:AccessDataSource> <div class="sample"> <table> <tr> <td class="controlsTd">コンボ: <br /> <im_combo:GcComboBox ID="GcComboBox1" runat="server" HasLoadFromXml="True" DataSourceID="AccessDataSource1" ItemsChanged="False" Width="250px"> <ListBox AutoGenerateColumns="True" AutoWidth="True" StatusBar="True" AllowResize="True" /> <horizontalline linecolor="#FF6666" linestyle="Solid" linewidth="1px" /> <verticalline linestyle="Dotted" linewidth="1px" /> <listheaderpane visible="True" /> <defaultcolumn autowidth="True" header-allowresize="True" header-clickable="True" /> <listcolumn datapropertyname = "データバインドされた Col0" header-text = "データバインドされた Col0" ></listcolumn> <listcolumn datapropertyname = "データバインドされた Col1" header-text = "データバインドされた Col1" ></listcolumn> <listcolumn datapropertyname = "データバインドされた Col2" header-text = "データバインドされた Col2" ></listcolumn> <ItemTemplate BackColor="#FFFACD"></ItemTemplate> <ItemTemplate BackColor="#FFF5EE"></ItemTemplate> <helpvalue ></helpvalue> </im_combo:GcComboBox> </td> </tr> <tr> <td class="controlsTd">リスト:<br /> <im_list:GcListBox ID="GcListBox1" runat="server" HasLoadFromXml="True" Width="570px" AutoGenerateColumns="True" DataSourceID="AccessDataSource1" StatusBar="True"> <HorizontalLine LineColor="#FF9966" LineStyle="Solid" LineWidth="1px" /> <VerticalLine LineColor="#CCCCCC" LineStyle="Dashed" LineWidth="1px" /> <ListHeaderPane Visible="True" /> <DefaultColumn AutoWidth="True" Header-AllowResize="True" Header-Clickable="True" /> <listcolumn datapropertyname = "データバインドされた Col0" header-text = "データバインドされた Col0" ></listcolumn> <listcolumn datapropertyname = "データバインドされた Col1" header-text = "データバインドされた Col1" ></listcolumn> <listcolumn datapropertyname = "データバインドされた Col2" header-text = "データバインドされた Col2" ></listcolumn> <ItemTemplate BackColor="#F5FFFA" ForeColor="#483D8B"></ItemTemplate> <ItemTemplate BackColor="#FAEBD7" ForeColor="#B22222"></ItemTemplate> <helpvalue ></helpvalue> </im_list:GcListBox> </td> </tr> </table> </div> <label style="font-size:80%;"><input type="checkbox" id="isClient" checked="checked" /> クライアント側の設定を有効にする</label> <table class="inputTable"> <tr> <th class="inputTh">Textプロパティとして表示するカラムのインデックス</th> <td class="inputTd"> <im_number:GcNumber ID="GcNumber1" runat="server" HasLoadFromXml="True" MaxValue="4" MinValue="0" Width="60px"> <clientevents valuechanged="GcNumber1_ValueChanged"></clientevents> <DropDown Visible="False" Enabled="false" /><Spin Visible="True" /><helpvalue value = "0" ></helpvalue> </im_number:GcNumber> </td> </tr> <tr> <th class="inputTh">ステータスバーに表示するカラムのインデックス</th> <td class="inputTd"> <im_number:GcNumber ID="GcNumber2" runat="server" HasLoadFromXml="True" MaxValue="4" MinValue="0" Width="60px"> <clientevents valuechanged="GcNumber2_ValueChanged"></clientevents> <DropDown Visible="False" Enabled="false" /><Spin Visible="True" /><helpvalue value = "1" ></helpvalue> </im_number:GcNumber> </td> </tr> <tr> <th class="inputTh">カラムヘッダの幅サイズ変更</th> <td class="inputTd"> <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" Text="有効にする" onclick="AllowResize(this);"/> </td> </tr> <tr> <th class="inputTh">カラムヘッダクリックによるソート</th> <td class="inputTd"> <asp:CheckBox ID="CheckBox2" runat="server" Checked="True" Text="有効にする" onclick="Clickable(this);"/> </td> </tr> </table> <center> <asp:Button ID="Button1" runat="server" CssClass="button_nowidth" Text="サーバー側で設定" onclick="Button1_Click" /> </center> </asp:Content>