All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP实例:从数组里筛选出重复的数据_php资料_编程技术
多国语言的实现方法在ASP.NET中_[Asp.Net教程]
Linux,下用PHP4连接,Oracle8i,的方法_php资料_编程技术
巧用Ajax和RSS做个人门户网站_[AJAX教程]
C#中Timer组件应用实例
Sql,server使用技巧:快速有条件删除海量数据_[SQL,Server教程]
用sp_lock诊断SQL Sever的性能问题_[SQL Server教程]
在ASP.NET,Atlas中创建自定义Action_[Asp.Net教程]
C#关闭Windows,XP的实现代码_.net资料_编程技术
IE和FireFox下javascript读写XML实现广告轮换_JavaScript技术_编程技术
Reading number is top 10 pictures
性感丰满身材火爆de美女2
这年头,找个靠谱的妹子太难了
The cat shit
这才是真正的人体艺术3
Sora aoi in China2
Sora aoi possession of boudoir2
教你22句话
好身材能把衣服穿出3D效果
七步解决性冷淡
Sexy women in 2013--2
Download software ranking
电脑知识及技巧大合集
WebService在.NET中的实战应用教学视频 → 第1集
Proficient in JavaScript
Sora aoi‘s film--Lust fan wall
Call Of Duty5
Wild things 2
Ashlynn Video3
Boxer vs Yellow2
The Bermuda triangle1
少妇苏霞全本
aaa published in(发表于) 2013/12/8 7:52:22 Edit(编辑)
如何于DataGridView控件中以跨数据行方式显示数据_.net资料_编程技术

如何于DataGridView控件中以跨数据行方式显示数据_.net资料_编程技术

如何于DataGridView控件中以跨数据行方式显示数据_.net资料_编程技术-你的首页-uuhomepage.com

一般来说,每一个字段的内容会单独显示于DataGridView控件的一个数据行中。问题是,某些字段拥有大量文字数据,我是不是能够让该字段的内容以跨数据行的方式来显示,以便在有限的画面空间中的呈现出更完整的内容呢?答案当然是肯定的。



以图表1所示的执行画面而言,「自传」字段的内容并未单独显示于一个数据行中,而是以横跨数据行的方式,显示在同笔数据列之各字段内容的下方。相关程序代码列示如下:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;



private int oldRowIndex = 0;
private const int CUSTOM_CONTENT_HEIGHT = 80;
private DataSet myDataSet;


private void CH13_DemoForm009_Load(object sender, EventArgs e)
{
Padding newPadding = new Padding(0, 1, 0, CUSTOM_CONTENT_HEIGHT);
this.DataGridView1.RowTemplate.DefaultCellStyle.Padding = newPadding;


this.DataGridView1.RowTemplate.DefaultCellStyle.SelectionBackColor =
Color.Transparent;


this.DataGridView1.RowTemplate.Height += CUSTOM_CONTENT_HEIGHT;


this.DataGridView1.AllowUserToAddRows = false;
this.DataGridView1.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
this.DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;
this.DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;


myDataSet = LoadDataToDataSet();


if(myDataSet != null)
{
// 将 BindingSource 组件系结至数据集对象中的「飞狐工作室」数据表。
this.BindingSource1.DataMember = "飞狐工作室";
this.BindingSource1.DataSource = myDataSet;


this.BindingSource1.AllowNew = false;


// 将 BindingNavigator 控件的数据来源也设定成 BindingSource 组件
//,如此一来,就可以使用 BindingNavigator 控件去导览
// DataGridView 控件中的数据列。
this.BindingNavigator1.BindingSource = this.BindingSource1;


this.DataGridView1.DataSource = this.BindingSource1;
}
else
{
return;
}


this.DataGridView1.Columns[4].Visible = false;


this.DataGridView1.Columns[0].SortMode =
DataGridViewColumnSortMode.NotSortable;
this.DataGridView1.Columns[2].SortMode =
DataGridViewColumnSortMode.NotSortable;
this.DataGridView1.Columns[3].SortMode =
DataGridViewColumnSortMode.NotSortable;





this.DataGridView1.AutoResizeRows(
DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}


private void DataGridView1_ColumnWidthChanged(object sender,
DataGridViewColumnEventArgs e)
{
this.DataGridView1.Invalidate();
}


private void DataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
if(oldRowIndex != -1)
{
this.DataGridView1.InvalidateRow(oldRowIndex);
}


oldRowIndex = this.DataGridView1.CurrentCellAddress.Y;
}


private void DataGridView1_RowPrePaint(object sender,
DataGridViewRowPrePaintEventArgs e)
{
e.PaintParts = e.PaintParts & (~DataGridViewPaintParts.Focus);


if((e.State & DataGridViewElementStates.Selected) ==
DataGridViewElementStates.Selected)
{
Rectangle rowBounds = new Rectangle(
this.DataGridView1.RowHeadersWidth, e.RowBounds.Top,
this.DataGridView1.Columns.GetColumnsWidth(
DataGridViewElementStates.Visible) -
this.DataGridView1.HorizontalScrollingOffset + 1,
e.RowBounds.Height);


System.Drawing.Drawing2D.LinearGradientBrush backbrush =
new System.Drawing.Drawing2D.LinearGradientBrush(rowBounds,
this.DataGridView1.DefaultCellStyle.SelectionBackColor,
e.InheritedRowStyle.ForeColor,
System.Drawing.Drawing2D.LinearGradientMode.Horizontal);


try
{
e.Graphics.FillRectangle(backbrush, rowBounds);
}
finally
{
backbrush.Dispose();
}
}
}


private void DataGridView1_RowPostPaint(object sender,
DataGridViewRowPostPaintEventArgs e)
{
Rectangle rowBounds = new Rectangle(this.DataGridView1.RowHeadersWidth,
e.RowBounds.Top, this.DataGridView1.Columns.GetColumnsWidth(

DataGridViewElementStates.Visible) -
this.DataGridView1.HorizontalScrollingOffset + 1, e.RowBounds.Height);


SolidBrush forebrush = null;


try
{
if((e.State & DataGridViewElementStates.Selected) ==
DataGridViewElementStates.Selected)
{
forebrush = new SolidBrush(e.InheritedRowStyle.SelectionForeColor);
}
else
{
forebrush = new SolidBrush(e.InheritedRowStyle.ForeColor);
}


Object recipe =
this.DataGridView1.Rows.SharedRow(e.RowIndex).Cells[4].Value;


if(!(recipe == null))
{
string text = recipe.ToString();
Rectangle textArea = rowBounds;
RectangleF clip = textArea;


textArea.X -= this.DataGridView1.HorizontalScrollingOffset;
textArea.Width += this.DataGridView1.HorizontalScrollingOffset;
textArea.Y += rowBounds.Height - e.InheritedRowStyle.Padding.Bottom;
textArea.Height -= rowBounds.Height -
e.InheritedRowStyle.Padding.Bottom;
textArea.Height =
(textArea.Height / e.InheritedRowStyle.Font.Height) *
e.InheritedRowStyle.Font.Height;

clip.Width -= this.DataGridView1.RowHeadersWidth + 1 - clip.X;
clip.X = this.DataGridView1.RowHeadersWidth + 1;

RectangleF oldClip = e.Graphics.ClipBounds;


e.Graphics.SetClip(clip);


e.Graphics.DrawString(text, e.InheritedRowStyle.Font,
forebrush, textArea);


e.Graphics.SetClip(oldClip);
}
}
finally
{
forebrush.Dispose();
}


if (this.DataGridView1.CurrentCellAddress.Y == e.RowIndex)
{
e.DrawFocus(rowBounds, true);
}
}


private void DataGridView1_RowHeightChanged(
object sender, DataGridViewRowEventArgs e)
{
int preferredNormalContentHeight =
e.Row.GetPreferredHeight(e.Row.Index,
DataGridViewAutoSizeRowMode.AllCellsExceptHeader, true) -
e.Row.DefaultCellStyle.Padding.Bottom;


Padding newPadding = e.Row.DefaultCellStyle.Padding;

newPadding.Bottom = e.Row.Height - preferredNormalContentHeight;
e.Row.DefaultCellStyle.Padding = newPadding;
}


// 本程序会连接至数据来源并建立所需的 DataSet 对象。
private DataSet LoadDataToDataSet()
{
// 利用 SqlConnectionStringBuilder 对象来构建连接字符串。
SqlConnectionStringBuilder sqlStringBuilder =
new SqlConnectionStringBuilder();


sqlStringBuilder.DataSource = @"(local)\SQLEXPRESS";
sqlStringBuilder.InitialCatalog = "北风贸易";
sqlStringBuilder.IntegratedSecurity = true;


// 建立一个数据集。
DataSet ds = new DataSet();


try
{
using (SqlConnection northwindConnection =
new SqlConnection(sqlStringBuilder.ConnectionString))
{
SqlCommand cmdLiming = new SqlCommand(
"SELECT 姓名,员工性别,出生日期, 目前薪资, 自传" +
" FROM dbo.飞狐工作室 WHERE 自传 IS NOT NULL",
northwindConnection);


northwindConnection.Open();


using (SqlDataReader drLiming = cmdLiming.ExecuteReader())
{
ds.Load(
drLiming,
LoadOption.OverwriteChanges,
new string[] { "飞狐工作室" });
}
}
}
catch (Exception)
{
MessageBox.Show(
"要能够顺利执行本范例程序,您的计算机必须已安装 SQL Server " +
"Express,并且必须已附加了本书所附的「北风贸易」数据库。" +
"关于如何安装 SQL Server Express,请参阅附录或相关文件说明。");


// 无法连接至 SQL Server。
return null;
}


return ds;
}






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.