...
Visual Basic |
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlStr As String = TextBox1.Text Dim da as Oledb.OleDbDataAdapter = New Oledb.OleDbDataAdapter (sqlStr, Me.CustomersTableAdapter.Connection) Dim ds As DataSet = New DataSet() ds.Clear() Try da.Fill(ds, "mySQL") Me.C1TrueDBGrid1.DataSource = Nothing Me.C1TrueDBGrid1.ClearFields() Me.C1TrueDBGrid1.SetDataBinding(ds.Tables("mySQL"), "", False) Catch MessageBox.Show("Error in SQL clause") End Try End Sub |
To write code in C#
C# | <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="f97726e7-1521-4fcf-a0b0-f662bd7bd22e"><ac:plain-text-body><![CDATA[ |
private void button1_Click(System.object sender, System.EventArgs e) { string sqlStr = TextBox1.Text; da as Oledb.OleDbDataAdapter = New Oledb.OleDbDataAdapter (sqlStr, this.CustomersTableAdapter.Connection); DataSet DataSet ds = new DataSet(); ds.Clear(); try { da.Fill(ds, "mySQL"); this.c1TrueDBGrid1.DataSource = null; this.c1TrueDBGrid1.ClearFields(); this.c1TrueDBGrid1.SetDataBinding(ds.Tables["mySQL"], "", false); } catch () { ]]></ac:plain-text-body></ac:structured-macro> MessageBox.Show ("Error in SQL clause"); } } |
|
运行此程序并观察下列各项:
在教程教程1: 绑定绑定True DBGrid到数据集到数据集 (Section 12.1)中, True DBGrid for WinForms 从数据集中检索数据库结构信息并自动配置自己以显示包含在数据库表中的所有字段。 注意字段名被作为默认的列标题使用。
...
Next
Me.C1TrueDBGrid1.Refresh()
To write code in C#
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="fc4c2dce-6b80-436d-9de7-53e6f7215839"><ac:plain-text-body><![CDATA[ | int l; for (l = 0 ; l < this.DsComposer.Composer.Rows.Count; l++) { if (this.DsComposer.Composer.Rows[l].["Country"] == "Germany") { this.c1TrueDBGrid1.SelectedRows.Add(l); } } this.c1TrueDBGrid1.Refresh(); |
]]></ac:plain-text-body></ac:structured-macro> | - 在Button2的Click事件中增加下面的代码,取消选中行:
...
C# |
private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e) { if(e.Column.Caption == "Name" && e.Row < dtCopy.Rows.Count) { <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="25cbd620-8a07-487c-a8b5-c3574f7cc183"><ac:plain-text-body><![CDATA[ e.Value = this.c1TrueDBGrid1[e.Row, "FirstName"].ToString()+ " " + this.c1TrueDBGrid1[e.Row, "LastName"].ToString(); }]]></ac:plain-text-body></ac:structured-macro>
} |
运行此程序并观察下列各项:
当应用运行时,应该与下面的图一样:
!worddav6f6b848051fff7fc103b814826fb71a0.png|height=316,width=466!正如定义在UnboundColumnFetch事件中,第一列显示组合的_FirstName_和_LastName_字段。CustType, ContactType_和_Callback 列显示数字的值,这些值对用户十分模糊并且提供了一个无吸引力的数据呈C1TrueDBGrid1根据在设计时配置的五列,从连接的表中显示数据。
现。在接下来的三个教程中(7, 8, 和9),将图解提高显示和用户界面。.
总结教程;你已经成功地完成了在绑定的网格中定义未绑定的列。
...
C# |
private void Form1_Load(System.object sender, System.EventArgs e) { this.ContactsTableAdapter.Fill(this.DsContacts.Contacts); // Add customer types to ListBox1. this.listBox1.Items.Add("Prospective"); this.listBox1.Items.Add("Normal"); this.listBox1.Items.Add("Buyer"); this.listBox1.Items.Add("Distributor"); this.listBox1.Items.Add("Other"); this.listBox1.Visible = false; // Place a button in the CustType column. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="518dfa40-7fd5-4931-bb7f-3abe8024a2df"><ac:plain-text-body><![CDATA[ this.c1TrueDBGrid1.Splits[0].DisplayColumns["CustType"].Button = true; ]]></ac:plain-text-body></ac:structured-macro>
} |
- 如果在CustType 列中的单元格成为了当前单元格,一个按钮将被放置在单元格的右边缘。单击按钮将触发网格的ButtonClick 事件。当一个按钮无论何时被点击时,我们将下拉该ListBox1列表框:
...
C# |
private void c1TrueDBGrid1_ButtonClick(object sender, <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="469c88c3-6775-40d8-bb8b-2dde45bf09bb"><ac:plain-text-body><![CDATA[ C1.Win.C1TrueDBGrid.ColEventArgs e) { this.listBox1.Left = this.c1TrueDBGrid1.Left + this.c1TrueDBGrid1.RecordSelectorWidth + this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Width + this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Width; this.listBox1.Top = this.c1TrueDBGrid1.Top + this.c1TrueDBGrid1.RowTop(this.c1TrueDBGrid1.Row); this.listBox1.Visible = true; this.listBox1.Select(); ]]></ac:plain-text-body></ac:structured-macro>
} |
- 在ListBox1列表框的DoubleClick 事件,添加下面的代码。当一个ListBox1列表框中的条目被选中时,这些代码将复制它的下标到C1TrueDBGrid1中的合适的列,然后使ListBox1 列表框不可见。
...
Visual Basic |
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick Me.C1TrueDBGrid1.Columns("CustType").Text = Me.ListBox1.SelectedIndex + 1 Me.ListBox1.Visible = False End Sub |
To write code in C#
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8cd47984-48b9-4d4b-b2c6-2b05e93f6e33"><ac:plain-text-body><![CDATA[ | private void listBox1_DoubleClick(object sender, System.EventArgs e) { this.c1TrueDBGrid1.Columns["CustType"].Text = (this.listBox1.SelectedIndex +
|
]]></ac:plain-text-body></ac:structured-macro> 1).ToString(); this.listBox1.Visible = false; } |
- 然后在ListBox1列表框的Leave 事件,添加下面的代码,以确信一旦选中的部分产生,列表框不可见:
...
C# |
private void C1TrueDBGrid1_FetchRowStyle(object sender, <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ed3394e7-aedc-4057-baed-675073c5fc75"><ac:plain-text-body><![CDATA[C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs e) { if (bFlag == 1 && (int)this.c1TrueDBGrid1 [e.Row, "CustType"] == 1 ) { ]]></ac:plain-text-body></ac:structured-macro>
Font fntFont = new Font(e.CellStyle.Font.Name, e.CellStyle.Font.Size, FontStyle.Bold); e.CellStyle.Font = fntFont; <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d57b97da-f696-442d-bb4a-4a32e8236c39"><ac:plain-text-body><![CDATA[ e.CellStyle.ForeColor = System.Drawing.Color.Blue; } if (bFlag == 2 && this.c1TrueDBGrid1 [e.Row, "CustType"] == 4 ) { ]]></ac:plain-text-body></ac:structured-macro>
e.CellStyle.ForeColor = System.Drawing.Color.White; |
...
C# |
private void C1TrueDBGrid2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { this.label3.Text = "Create a new record when dropped..."; e.Effect = DragDropEffects.Copy; } private void C1TrueDBGrid2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { try { int row = (int)e.Data.GetData(typeof(int)); // Use the grid's indexer to get some data. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4d0e6243-efea-4d08-a720-3f54b8c7eeb3"><ac:plain-text-body><![CDATA[ string custname = this.c1TrueDBGrid1[row, "FirstName"].ToString(); ]]>< /ac:plain-text-body></ ac:structured-macro> // Use the CellText() method to get some data. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="246df1a0-6c92-416b-9c08-257e423a8aa4"><ac:plain-text-body><![CDATA[ custname += " " + this.c1TrueDBGrid1.Columns["LastName"].CellText(row); ]]>< /ac:plain-text-body></ ac:structured-macro> <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="37b23874-c276-4aec-b957-b75f911476aa"><ac:plain-text-body><![CDATA[ // Use the CellValue() method to get some data. custname += " " + this.c1TrueDBGrid1.Columns["Company"].CellValue(row).ToString(); ]]>< /ac:plain-text-body></ ac:structured-macro> // Add a new row to the data set for the bottom grid. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b1098935-aeac-450c-9fae-ce4fadbe4e7e"><ac:plain-text-body><![CDATA[ DataRowView drv = this.DsCallList.CallList.DefaultView.AddNew(); drv["CallDate"] = DateTime.Now; drv["Customer"] = custname; drv["Phone"] = this.c1TrueDBGrid1.Columns["Phone"].Value.ToString(); drv.EndEdit(); this.c1TrueDBGrid2.MoveLast(); this.c1TrueDBGrid2.Select(); ]]>< /ac:plain-text-body></ ac:structured-macro> // Commit changes to the database. DataSet inserted = this.DsCallList.GetChanges(DataRowState.Added); if (! (inserted == null) ) { this.CallListTableAdapter.Update(inserted); } this.ResetDragDrop(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } |
...
Visual Basic |
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Create an additional split. Me.C1TrueDBGrid1.InsertHorizontalSplit(0)
' Hide all columns in the leftmost split except 0 and 1. Dim x As Integer For x = 2 To Me.C1TrueDBGrid1.Columns.Count - 1 Me.C1TrueDBGrid1.Splits(0).DisplayColumns.Visible = False
|
...
Next ' Configure split 0 to display exactly 2 columns. With Me.C1TrueDBGrid1.Splits(0) .SplitSizeMode = C1.Win.C1TrueDBGrid.SizeModeEnum.NumberOfColumns .SplitSize = 2 .AllowHorizontalSizing = False End |
...
With ' Make columns 0 and 1 invisible in split 1. Me.C1TrueDBGrid1.Splits(1).DisplayColumns(0).Visible = False Me.C1TrueDBGrid1.Splits(1).DisplayColumns(1).Visible = |
...
False ' Turn off record selectors in split 1. Me.C1TrueDBGrid1.Splits(1).RecordSelectors = False End Sub |
To write code in C#
C# |
private void Form1_Load(System.object sender, System.EventArgs e) { // Create an additional split. this.c1TrueDBGrid1.InsertHorizontalSplit(0); <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="5d440f45-7c69-480c-86dd-98c9c37915da"><ac:plain-text-body><![CDATA[ // Hide all columns in the leftmost split except 0 and 1. int x; for (x = 2 ; x < this.c1TrueDBGrid1.Columns.Count; x++) { this.c1TrueDBGrid1.Splits[0].DisplayColumns[x].Visible = false; } ]]>< /ac:plain-text-body></ ac:structured-macro> // Configure split 0 to display exactly 2 columns. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="06065703-cfb0-46f6-a87d-54f80701955a"><ac:plain-text-body><![CDATA[ this.c1TrueDBGrid1.Splits[0].SplitSizeMode = C1.Win.C1TrueDBGrid.SizeModeEnum.NumberOfColumns; this.c1TrueDBGrid1.Splits[0].SplitSize = 2; this.c1TrueDBGrid1.Splits[0].AllowHorizontalSizing = false; ]]>< /ac:plain-text-body></ ac:structured-macro> // Make columns 0 and 1 invisible in split 1. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="33523b6d-17ac-4831-84b0-23173da23ef9"><ac:plain-text-body><![CDATA[ this.c1TrueDBGrid1.Splits[1].DisplayColumns[0].Visible = false; this.c1TrueDBGrid1.Splits[1].DisplayColumns[1].Visible = false; ]]>< /ac:plain-text-body></ ac:structured-macro> // Turn off record selectors in split 1. <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="48b220e5-e020-453b-9b86-1700cfbfb9d4"><ac:plain-text-body><![CDATA[ this.c1TrueDBGrid1.Splits[1].RecordSelectors = false; ]]></ac:plain-text-body></ac:structured-macro> } |
运行程序并观察下面的步骤:
C1TrueDBGrid 显示来自数据控件的数据,正如在 教程教程1: 绑定绑定True DBGrid到数据集到数据集 (Section 12.1).
在最左边的Split的两列(First 和_Last_) 被固定并且不能滚动。在左边Split的下面没有水平滚动条呈现。一个水平的滚动条出现在最右边Split的下面,允许用户滚动Split中的列。
在任何网格中使用Split来创建固定的,不滚动的列,甚至在中间也使用分隔符呈现数据的不同视图。例如,Split能创建
独立地滚动 (在垂直方向) 以便用户能比较纪录在数据库的最开始和最后。为了让获取更多信息,参见怎样使用分隔符怎样使用分隔符
(Section 9)。
你已经成功地完成了创建固定的,无滚动列的网格;总结教程14.
...
Visual Basic |
' Change the presentation of the grid. With Me.C1TrueDBGrid1.Splits(0).DisplayColumns .Item("Country").Style.BackColor = System.Drawing.Color.Cyan Dim fntFont As Font fntFont = New Font("Times New Roman", .Item("Country").Style.Font.Size, FontStyle.Regular) .Item("Country").Style.Font = fntFont .Item("Last").Style.ForeColor = System.Drawing.Color.Red End With Me.C1TrueDBGrid1.Columns("last").NumberFormat = "FormatText Event" With Me.C1TrueDBGrid1.HeadingStyle Dim fntfont As Font fntfont = New Font(.Font.Name, .Font.Size, FontStyle.Bold) .Font = fntfont .BackColor = System.Drawing.Color.Blue .ForeColor = System.Drawing.Color.Yellow End With |
To write code in C#
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d6b19f71-6f2a-41e6-906a-76906f5f3488"><ac:plain-text-body><![CDATA[ | // Change the presentation of the grid. C1DisplayColumn col = this.c1TrueDBGrid1.Splits[0].DisplayColumns["Country"]; col.Style.BackColor = System.Drawing.Color.Cyan; Font fntFont; fntFont = new Font("Times new Roman", col.Style.Font.Size, FontStyle.Regular); col.Style.Font = fntFont;
|
]]></ac:plain-text-body></ac:structured-macro> <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8307a0a7-f5a0-4bff-b95b-2b0798323212"><ac:plain-text-body><![CDATA[ c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Style.ForeColor = System.Drawing.Color.Red;
|
]]></ac:plain-text-body></ac:structured-macro> <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d29d7c43-728c-45d0-bac6-f555c023e1f5"><ac:plain-text-body><![CDATA[ this.c1TrueDBGrid1.Columns["last"].NumberFormat = "FormatText event"; Font fntfont;
|
]]></ac:plain-text-body></ac:structured-macro> fntfont = new Font(Font.Name, this.c1TrueDBGrid1.HeadingStyle.Font.Size, FontStyle.Bold); this.c1TrueDBGrid1.HeadingStyle.Font = fntfont; this.c1TrueDBGrid1.HeadingStyle.BackColor = System.Drawing.Color.Blue; this.c1TrueDBGrid1.HeadingStyle.ForeColor = System.Drawing.Color.Yellow; |
- 在先前的代码中,列的NumberFormat属性被设置为FormatText。这意味着FormatText 事件将触发可用的程序来改变列的样式和格式。键入下面的代码到FormatText 事件,这样会改变列的值为大写字体:
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_FormatText(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FormatTextEventArgs) Handles C1TrueDBGrid1.FormatText e.Value = UCase(e.Value) End Sub |
To write code in C#
C# |
private void C1TrueDBGrid1_FormatText(object sender, C1.Win.C1TrueDBGrid.FormatTextEventArgs e) { e.Value = e.Value.ToUpper(); } |
- 添加下面的代码到Button1的Click事件。它使用PrintInfo 对象和他的属性和方法来创建页头和页脚。它以调用PrintPreview方法结束来实行打印先前的窗口:
...
Visual Basic |
With Me.C1TrueDBGrid1.PrintInfo Dim fntFont As Font fntFont = New Font(.PageHeaderStyle.Font.Name, .PageHeaderStyle.Font.Size, FontStyle.Italic) .PageHeaderStyle.Font = fntFont .PageHeader = "Composers Table" ' Column headers will be on every page. .RepeatColumnHeaders = |
...
True ' Display page numbers (centered). .PageFooter = "Page: \p" ' Invoke print preview. .UseGridColors = True .PrintPreview() End With |
To write code in C#
C# |
Font fntFont; fntFont = new Font(this.c1TrueDBGrid1.PrintInfo.PageHeaderStyle.Font.Name, this.c1TrueDBGrid1.PrintInfo.PageHeaderStyle.Font.Size, FontStyle.Italic); this.c1TrueDBGrid1.PrintInfo.PageHeaderStyle.Font = fntFont; this.c1TrueDBGrid1.PrintInfo.PageHeader = "Composers Table"; // Column headers will be on every page. this.c1TrueDBGrid1.PrintInfo.RepeatColumnHeaders = true; // Display page numbers (centered). this.c1TrueDBGrid1.PrintInfo.PageFooter = "Page: p"; // Invoke print preview. this.c1TrueDBGrid1.PrintInfo.UseGridColors = true; this.c1TrueDBGrid1.PrintInfo.PrintPreview(); |
运行程序并观察下面的步骤:
C1TrueDBGrid1 展示在第4步中使用字体和颜色改变指定的数据。
!worddavcd94522237b5e76d15d5b4a597be3804.png|height=316,width=466!点击 *Print Preview*按钮来显示一个单独的应用窗体。输出反映了网格的格式。你已经成功地完成了使用打印信息和打印预览;总结教程15.
...
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBDropDown1.ValueTranslate = True Me.C1TrueDBDropDown1.ListField = "TypeDesc" Me.C1TrueDBDropDown1.DataField = "TypeID" |
To write code in C#
C# |
this.c1TrueDBDropDown1.ValueTranslate = true; this.c1TrueDBDropDown1.ListField = "TypeDesc"; this.c1TrueDBDropDown1.DataField = "TypeID"; |
运行程序并观察下面的步骤:
C1TrueDBGrid1 显示在教程教程8: 附加下拉框控件到网格单元格附加下拉框控件到网格单元格 (Section 12.8)中指定的数据。
网格的CustType 列的值目前显示了一个很长的描述已显示在下拉框中。在运行时,从下拉框到网格列这些值被自动地翻译。
你已经成功地完成了使用C1TrueDBDropDowns ValueTranslate属性;总结该教程。
...
Visual Basic |
' String to be copied to the clipboard. Dim strTemp As String
Dim row As Integer Dim col As C1.Win.C1TrueDBGrid.C1DataColumn Dim cols As Integer, rows As Integer If Me.C1TrueDBGrid1.SelectedRows.Count > 0 Then For Each row In Me.C1TrueDBGrid1.SelectedRows
' Copy everything here. For Each col In Me.C1TrueDBGrid1.SelectedCols strTemp = strTemp & col.CellText(row) & vbTab Next strTemp = strTemp & vbCrLf Next System.Windows.Forms.Clipboard.SetDataObject(strTemp, False) MessageBox.Show ("Range of " & Me.C1TrueDBGrid1.SelectedCols.Count & " x " & C1TrueDBGrid1.SelectedRows.Count & " cells have been copied to the clipboard |
...
in TAB delimited format") Else MessageBox.Show ("Please select a range of cells") End If |
To write code in C#
C# |
// String to be copied to the clipboard. string strTemp; int row; C1.Win.C1TrueDBGrid.C1DataColumn col; int cols, rows; if (this.c1TrueDBGrid1.SelectedRows.Count > 0 ) { foreach (row in this.c1TrueDBGrid1.SelectedRows) {
// Copy everything here. foreach (col in this.c1TrueDBGrid1.SelectedCols) { strTemp = strTemp + col.CellText(row) + "\t"; } strTemp = strTemp + "\n"; } System.Windows.Forms.Clipboard.SetDataObject(strTemp, false); MessageBox.Show ("Range of " + this.c1TrueDBGrid1.SelectedCols.Count.ToString() + " x " + this.c1TrueDBGrid1.SelectedRows.Count.ToString() + " cells have been copied to the clipboard in TAB delimited format"); } else { MessageBox.Show ("Please select a range of cells"); } |
...
Visual Basic |
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Select Case ComboBox1.SelectedItem Case "Normal" Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Normal Case "Inverted" Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Inverted Case "Form" Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Form Case "GroupBy" Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy Case "MultipleLines" Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.MultipleLines Case "Hierarchical" MessageBox.Show ("Hierarchical View can't be set at run time. Please see the Hierarchical Display tutorial") End Select End Sub |
To write code in C#
C# |
private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { switch (ComboBox1.SelectedItem) { case "Normal": this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Normal; break; case "Inverted": this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Inverted; break; case "Form": this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.Form; break; case "GroupBy": this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy; break; case "MultipleLines": this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.MultipleLines; break; case "Hierarchical"; MessageBox.Show ("Hierarchical View can't be set at run time. Please see the Hierarchical Display tutorial"); break; } } |
运行程序并观察下面的步骤:
C1TrueDBGrid1 显示在教程教程*1:* 绑定绑定*True DBGrid*到数据集到数据集 (Section 12.1)*中指定的数据 。改变组合框为*Inverted。Inverted视图显示网格的列作为行,网格的行作为列。这个网格现在将看起来与下面的一样: !worddave1fe6fe690227bec0443078c31acadcf.png|height=313,width=461!改变组合框为*Form*。Form视图显示每一个纪录在类似窗体的视图上,这是一个最佳的数据入口。该网格现在看起来与下面的一样: !worddav5be98623dcc916559e2b412d6d2fd1d4.png|height=313,width=461!改变组合框为GroupBy。。GroupBy视图在网格上面包含一个分组区域,该区域的列可以被拖拽。拖拽一个列到这个区域,并通过列分组网格的剩余部分。拖拽Company 列到分组区域。该网格应该看起来与下面的一样: !worddavd9e5c205e30db2a1ff27ce26421ebc1f.png|height=313,width=461!改变组合框为*MultipleLines*。MultipleLines视图显示当前网格区域中所有的列,调整这些列显示连续的多行中。注意到有两列被挤出去显示在第2行。网格应该看起来与下面的一样: !worddav5936cb607863c51412ddfd956c1efeca.png|height=313,width=461!现在设置组合框为Hierarchical。没有改变发生,由于Hierarchical不能在运行时设置,事件中设置的
MessageBox被弹出。分层的数据必须在应用运行之前被设置。为了在视图上获取更多的信息,参见 教程教程16: 使用使用分层的显示分层的显示 (Section 12.16)。
你已经成功地完成了显示多个数据视图;总结该教程20。
...
To write code in Visual Basic
Visual Basic |
dbTable = Me.DsCustomer.Tables(0).Copy() ' Fill each combobox. FillComboBox1() FillCombo(ComboBox2) FillCombo(ComboBox3) FillCombo(ComboBox4) FillCombo(ComboBox5) Me.CheckBox2.Checked = True ' Initalize border sizes. Me.borderBottom = 1 Me.borderLeft = 1 Me.borderRight = 1 Me.borderTop = 1 |
To write code in C#
C# |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8343d73f-159e-4863-9178-ecd070e60361"><ac:plain-text-body><![CDATA[ | dbTable = this.DsCustomer.Tables[0].Copy(); // Fill each combobox. ]]></ac:plain-text-body></ac:structured-macro> FillComboBox1(); FillCombo(comboBox2); FillCombo(comboBox3); FillCombo(comboBox4); FillCombo(comboBox5); this.checkBox2.Checked = true; // Initalize border sizes. this.borderBottom = 1; this.borderLeft = 1; this.borderRight = 1; this.borderTop = 1; |
- 现在添加函数它将填充组合框:
To write code in Visual Basic
...
C# |
// Fill each combo with numbers from 1 to 10. private void FillCombo(ref ComboBox com) { int i; com.Text = 1; <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b06d08ea-9590-44e4-a4a1-a7bb835f32f4"><ac:plain-text-body><![CDATA[ for (i = 1 ; i <= 10; i++) { com.Items.Add[I]; } ]]></ac:plain-text-body></ac:structured-macro> } // Fill the first combo with border types. private void FillComboBox1() { this.comboBox1.Text = "None"; this.comboBox1.Items.Add("Fillet"); this.comboBox1.Items.Add("Flat"); this.comboBox1.Items.Add("Groove"); this.comboBox1.Items.Add("Inset"); this.comboBox1.Items.Add("InsetBevel"); this.comboBox1.Items.Add("None"); this.comboBox1.Items.Add("Raised"); this.comboBox1.Items.Add("RaisedBevel"); |
...