老尸 发表于 2015-1-16 22:32:36

ASP.NET网页编程之ASP.NET格局化DataGrid的例子

简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。asp.net|datagrid上面的代码完成格局化DataGrid的列,也便是将数据原中的0,1值转换成实践的笔墨的功效,次要是在数据绑定的帮定事务。

检察例子

起首筹办数据源,数据源接纳数据库、XML、数组等都能够。上面以XML做例子。Contacts.xml文件以下:

<?xmlversion="1.0"encoding="gb2312"standalone="yes"?>
<Contacts>
<Contact>
<Email>myaddress@mycompany.com</Email>
<FirstName>E章</FirstName>
<LastName>孟子</LastName>
<Manager>0</Manager>
</Contact>
<Contact>
<Email>youraddress@yourcompany.com</Email>
<FirstName>宪会</FirstName>
<LastName>孟</LastName>
<Manager>1</Manager>
</Contact>
<Contact>
<Email>mm@mmm.mm</Email>
<FirstName>Lover</FirstName>
<LastName>Net</LastName>
<Manager>0</Manager>
</Contact>
<Contact>
<Email>xxx@xxxx.xx</Email>
<FirstName>NET开辟者场地</FirstName>
<LastName/>
<Manager>0</Manager>
</Contact>
<Contact>
<Email>hhh@hhh.hh</Email>
<FirstName>XML开辟者场地</FirstName>
<LastName/>
<Manager>1</Manager>
</Contact>
</Contacts>


FormatDataGridVB.ASPx

<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="FormatDataGridVB.aspx.vb"
Inherits="aspx<ahref="http://dev.21tx.com/web/"target="_blank">Web</a>.FormatDataGridVB"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<metaname="GENERATOR"Content="MicrosoftVisualStudio7.0">
<metaname="CODE_LANGUAGE"Content="<ahref="http://dev.21tx.com/dotnet/csharp/"target="_blank">C#</a>">
<metaname="vs_defaultClientScript"content="<ahref="http://dev.21tx.com/web/javascript/"target="_blank">JavaScript</a>">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<formid="idbSample"method="post"runat="server"class="SubHeading">
<asp:LabelID="MyTitle"runat="server"Font-Bold="True"></asp:Label>
<br>
<br>
<asp:DataGridid="FormatDataGrid"runat="server"AutoGenerateColumns="False"Width="100%">
<HeaderStyleFont-Bold="True"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label
Text=<%#FormatFullName(DataBinder.Eval(Container,"DataItem.FirstName"),_
DataBinder.Eval(Container,"DataItem.LastName"))%>
runat="server"ID="Label1">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumnDataField="Email"ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumnDataField="Manager"ReadOnly="True">
<HeaderStyleHorizontalAlign="Center"></HeaderStyle>
<ItemStyleHorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>
FormatDataGridVB.aspx.vb

ImportsSystem
ImportsSystem.Data
ImportsSystem.Web.UI
ImportsSystem.Web.UI.WebControls
ImportsSystem.Xml

PublicClassFormatDataGridVB
InheritsSystem.Web.UI.Page
ProtectedWithEventsFormatDataGridAsSystem.Web.UI.WebControls.DataGrid
ProtectedWithEventsMyTitleAsSystem.Web.UI.WebControls.Label

#Region"Web窗体计划器天生的代码"
该挪用是Web窗体计划器所必须的。
<System.Diagnostics.DebuggerStepThrough()>PrivateSubInitializeComponent()

EndSub

PrivateSubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Init
CODEGEN:此办法挪用是Web窗体计划器所必须的
不要利用代码编纂器修正它。
InitializeComponent()
EndSub

#EndRegion

Private_dsContactsAsDataSet

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
MyTitle.Text="格局化DataGrid的例子【将数据原中的0,1值转换成实践的笔墨】"
FormatDataGrid.Columns(0).HeaderText="姓名"
FormatDataGrid.Columns(1).HeaderText="电子邮件"
FormatDataGrid.Columns(2).HeaderText="职位"
装载XML数据原,注重:这里与数据原范例没有干系,换成数据库也是合用的
_dsContacts=NewDataSet()
_dsContacts.ReadXml(Server.MapPath("Contacts.xml"))
DimdcPkAsDataColumn()={_dsContacts.Tables("Contact").Columns("Email")}
_dsContacts.Tables("Contact").PrimaryKey=dcPk

IfNotPage.IsPostBackThen
只在页面初次哀求时才举行数据绑定
BindContacts()
EndIf
EndSub

PrivateSubBindContacts()
DimdvAsDataView=NewDataView(_dsContacts.Tables("Contact"))
dv.Sort="LastName,FirstName"
FormatDataGrid.DataSource=dv
FormatDataGrid.DataBind()
EndSub

ProtectedFunctionFormatFullName(ByValFirstNameAsObject,ByValLastNameAsObject)AsString
格局划称号列
ReturnCType(LastName,String)&"."&CType(FirstName,String)
EndFunction

PrivateSubFormatDataGrid_ItemDataBound(ByValsenderAsObject,_
ByValeAsSystem.Web.UI.WebControls.DataGridItemEventArgs)HandlesFormatDataGrid.ItemDataBound

确保处置的是数据行,而不是Header大概Footer
Ife.Item.ItemType=ListItemType.ItemOrElsee.Item.ItemType=ListItemType.AlternatingItemThen
失掉Manager字段的值
DimisManagerAsString=CType(DataBinder.Eval(e.Item.DataItem,"Manager"),String)

IfisManager="1"Then
设定笔墨和背景色彩
e.Item.Cells(2).Text="司理"
e.Item.Cells(2).Style.Add("font-weight","bold")
e.Item.Cells(2).ForeColor=System.Drawing.Color.Red
e.Item.BackColor=System.Drawing.Color.AliceBlue
Else
e.Item.Cells(2).Text="一般员工"
EndIf
EndIf
EndSub
EndClass

C#版本

usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;

///<summary>
///SummarydescriptionforidbSample.
///</summary>
publicclassidbSample:System.Web.UI.Page
{

#regionWebFormDesignergeneratedcode
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:ThiscallisrequiredbytheASP.NETWebFormDesigner.
//
InitializeComponent();
base.OnInit(e);
}

///<summary>
///RequiredmethodforDesignersupport-donotmodify
///thecontentsofthismethodwiththecodeeditor.
///</summary>
privatevoidInitializeComponent()
{
this.dgContacts.ItemDataBound+=
newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.dgContacts_ItemDataBound);
this.Load+=newSystem.EventHandler(this.Page_Load);

}
#endregion

protectedSystem.Web.UI.WebControls.DataGridFormatDataGrid;

privateDataSet_dsContacts;

privatevoidPage_Load(objectsender,System.EventArgse)
{
//装载XML数据原,注重:这里与数据原范例没有干系,换成数据库也是合用的
_dsContacts=newDataSet();
_dsContacts.ReadXml(Server.MapPath("Contacts.xml"));
DataColumn[]dcPk={_dsContacts.Tables["Contact"].Columns["Email"]};
_dsContacts.Tables["Contact"].PrimaryKey=dcPk;

if(!Page.IsPostBack)
{
BindContacts();
}
}

privatevoidBindContacts()
{
DataViewdv=newDataView(_dsContacts.Tables["Contact"]);
dv.Sort="LastName,FirstName";
dgContacts.DataSource=dv;
dgContacts.DataBind();
}

protectedstringFormatFullName(objectFirstName,objectLastName)
{
//格局划称号列
return(string)LastName+","+(string)FirstName;
}

protectedvoidFormatDataGrid_ItemDataBound(objectsource,
System.Web.UI.WebControls.DataGridItemEventArgse)
{
//确保处置的是数据行,而不是Header大概Footer
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
//失掉Manager字段的值
stringisManager=(string)DataBinder.Eval(e.Item.DataItem,"Manager");

if(isManager=="1")
{
//设定笔墨和背景色彩
e.Item.Cells.Text="司理"
e.Item.Cells.Style.Add("font-weight","bold")
e.Item.Cells.ForeColor=System.Drawing.Color.Red
e.Item.BackColor=System.Drawing.Color.AliceBlue
}
else
{
e.Item.Cells.Text="一般员工";
}
}
}
}
也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。

海妖 发表于 2015-1-19 16:22:18

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

小妖女 发表于 2015-1-19 16:22:19

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

愤怒的大鸟 发表于 2015-1-25 12:58:09

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

只想知道 发表于 2015-2-2 22:10:10

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

变相怪杰 发表于 2015-2-8 12:02:19

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

若相依 发表于 2015-2-25 11:52:51

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

灵魂腐蚀 发表于 2015-3-15 14:21:55

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

再见西城 发表于 2015-3-22 02:07:57

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
页: [1]
查看完整版本: ASP.NET网页编程之ASP.NET格局化DataGrid的例子