愤怒的大鸟 发表于 2015-1-16 22:46:42

ASP.NET网页编程之怎样于DataGridView控件中以跨数据行方...

计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解)datagrid|控件|数据|显现一样平常来讲,每个字段的内容会独自显现于DataGridView控件的一个数据行中。成绩是,某些字段具有大批笔墨数据,我是否是可以让该字段的内容以跨数据行的体例来显现,以便在无限的画面空间中的出现出更完全的内容呢?谜底固然是一定的。

以图表1所示的实行画面而言,「自传」字段的内容并未独自显现于一个数据行中,而是以高出数据行的体例,显现在同笔数据列之各字段内容的下方。相干程序代码列示以下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;



privateintoldRowIndex=0;
privateconstintCUSTOM_CONTENT_HEIGHT=80;
privateDataSetmyDataSet;
privatevoidCH13_DemoForm009_Load(objectsender,EventArgse)
{
PaddingnewPadding=newPadding(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.Visible=false;
this.DataGridView1.Columns.SortMode=
DataGridViewColumnSortMode.NotSortable;
this.DataGridView1.Columns.SortMode=
DataGridViewColumnSortMode.NotSortable;
this.DataGridView1.Columns.SortMode=
DataGridViewColumnSortMode.NotSortable;

this.DataGridView1.AutoResizeRows(
DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}
privatevoidDataGridView1_ColumnWidthChanged(objectsender,
DataGridViewColumnEventArgse)
{
this.DataGridView1.Invalidate();
}
privatevoidDataGridView1_CurrentCellChanged(objectsender,EventArgse)
{
if(oldRowIndex!=-1)
{
this.DataGridView1.InvalidateRow(oldRowIndex);
}
oldRowIndex=this.DataGridView1.CurrentCellAddress.Y;
}
privatevoidDataGridView1_RowPrePaint(objectsender,
DataGridViewRowPrePaintEventArgse)
{
e.PaintParts=e.PaintParts&(~DataGridViewPaintParts.Focus);
if((e.State&DataGridViewElementStates.Selected)==
DataGridViewElementStates.Selected)
{
RectanglerowBounds=newRectangle(
this.DataGridView1.RowHeadersWidth,e.RowBounds.Top,
this.DataGridView1.Columns.GetColumnsWidth(
DataGridViewElementStates.Visible)-
this.DataGridView1.HorizontalScrollingOffset+1,
e.RowBounds.Height);
System.Drawing.Drawing2D.LinearGradientBrushbackbrush=
newSystem.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();
}
}
}
privatevoidDataGridView1_RowPostPaint(objectsender,
DataGridViewRowPostPaintEventArgse)
{
RectanglerowBounds=newRectangle(this.DataGridView1.RowHeadersWidth,
e.RowBounds.Top,this.DataGridView1.Columns.GetColumnsWidth(

DataGridViewElementStates.Visible)-
this.DataGridView1.HorizontalScrollingOffset+1,e.RowBounds.Height);
SolidBrushforebrush=null;
try
{
if((e.State&DataGridViewElementStates.Selected)==
DataGridViewElementStates.Selected)
{
forebrush=newSolidBrush(e.InheritedRowStyle.SelectionForeColor);
}
else
{
forebrush=newSolidBrush(e.InheritedRowStyle.ForeColor);
}
Objectrecipe=
this.DataGridView1.Rows.SharedRow(e.RowIndex).Cells.Value;
if(!(recipe==null))
{
stringtext=recipe.ToString();
RectangletextArea=rowBounds;
RectangleFclip=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;

RectangleFoldClip=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);
}
}
privatevoidDataGridView1_RowHeightChanged(
objectsender,DataGridViewRowEventArgse)
{
intpreferredNormalContentHeight=
e.Row.GetPreferredHeight(e.Row.Index,
DataGridViewAutoSizeRowMode.AllCellsExceptHeader,true)-
e.Row.DefaultCellStyle.Padding.Bottom;
PaddingnewPadding=e.Row.DefaultCellStyle.Padding;

newPadding.Bottom=e.Row.Height-preferredNormalContentHeight;
e.Row.DefaultCellStyle.Padding=newPadding;
}
//本程序会毗连至数据来历并创建所需的DataSet工具。
privateDataSetLoadDataToDataSet()
{
//使用SqlConnectionStringBuilder工具来构建毗连字符串。
SqlConnectionStringBuildersqlStringBuilder=
newSqlConnectionStringBuilder();
sqlStringBuilder.DataSource=@"(local)SQLEXPRESS";
sqlStringBuilder.InitialCatalog="冬风商业";
sqlStringBuilder.IntegratedSecurity=true;
//创建一个数据集。
DataSetds=newDataSet();
try
{
using(SqlConnectionnorthwindConnection=
newSqlConnection(sqlStringBuilder.ConnectionString))
{
SqlCommandcmdLiming=newSqlCommand(
"SELECT姓名,员工性别,出身日期,今朝薪资,自传"+
"FROMdbo.飞狐事情室WHERE自传ISNOTNULL",
northwindConnection);
northwindConnection.Open();
using(SqlDataReaderdrLiming=cmdLiming.ExecuteReader())
{
ds.Load(
drLiming,
LoadOption.OverwriteChanges,
newstring[]{"飞狐事情室"});
}
}
}
catch(Exception)
{
MessageBox.Show(
"要可以顺遂实行本典范程序,您的盘算机必需已安装SQLServer"+
"Express,而且必需已附加了本书所附的「冬风商业」数据库。"+
"关于怎样安装SQLServerExpress,请参阅附录或相干文件申明。");
//没法毗连至SQLServer。
returnnull;
}
returnds;
}
你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)

灵魂腐蚀 发表于 2015-1-19 23:25:55

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

冷月葬花魂 发表于 2015-1-26 11:59:05

当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。

若相依 发表于 2015-2-4 14:28:22

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

柔情似水 发表于 2015-2-10 01:41:10

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

只想知道 发表于 2015-2-28 13:05:45

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

乐观 发表于 2015-3-9 23:38:56

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

飘灵儿 发表于 2015-3-17 03:10:16

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

金色的骷髅 发表于 2015-3-23 17:57:46

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
页: [1]
查看完整版本: ASP.NET网页编程之怎样于DataGridView控件中以跨数据行方...