ASP.NET网页编程之主表和子表数据同时在绑定控件显现
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。控件|数据|显现(一).显现最终效果(二)代码
1.前台界面代码:
<%@Pagelanguage="c#"Codebehind="WebForm1.aspx.cs"AutoEventWireup="false"Inherits="数据绑定控件同时显现主表和子表数据.WebForm1"%>
<%@ImportNamespace="System.Data"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1">
<metaname="CODE_LANGUAGE"Content="C#">
<metaname="vs_defaultClientScript"content="JavaScript">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<bodyMS_POSITIONING="GridLayout">
<formid="Form1"method="post"runat="server">
<!--绑定主表数据-->
<asp:repeaterid="myRepeater"runat="server">
<HeaderTemplate>
<tableborder="0"bgcolor="lightblue">
</HeaderTemplate>
<ItemTemplate>
<tr>
<tdstyle="background-color:lightgray">
<b>
<%#DataBinder.Eval(Container.DataItem,"TypeID")%>
<%#DataBinder.Eval(Container.DataItem,"TypeName")%>
</b>
<br>
<!--绑定子表数据-->
<asp:repeaterid="childRepeater"datasource=<%#((DataRowView)Container.DataItem)
.Row.GetChildRows("TypeRelation")%>runat="server">
<itemtemplate>
<tableborder="0"bgcolor="#ffcc33">
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem,"["TypeID"]")%>
<%#DataBinder.Eval(Container.DataItem,"["TypeDetail"]")%>
<br>
</td>
</tr>
</table>
</itemtemplate>
</asp:repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</form>
</body>
</HTML>
2.儿女代码
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;
namespace数据绑定控件同时显现主表和子表数据
{
///<summary>
///数据绑定控件同时显现主表和子表数据
///</summary>
publicclassWebForm1:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.RepeatermyRepeater;
privatevoidPage_Load(objectsender,System.EventArgse)
{
DataSetds=newDataSet();
//1.机关主表
DataTabledtTypeParent=newDataTable();
dtTypeParent.Columns.Add(newDataColumn("TypeID",typeof(int)));
dtTypeParent.Columns.Add(newDataColumn("TypeName",typeof(string)));
//给主表增加两笔记录
DataRowdrParent1=dtTypeParent.NewRow();
drParent1["TypeID"]=1;
drParent1["TypeName"]="生果";
dtTypeParent.Rows.Add(drParent1);
DataRowdrParent2=dtTypeParent.NewRow();
drParent2["TypeID"]=2;
drParent2["TypeName"]="玩具";
dtTypeParent.Rows.Add(drParent2);
dtTypeParent.TableName="TypeParent";
dtTypeParent.PrimaryKey=newDataColumn[]{dtTypeParent.Columns["TypeID"]};
ds.Tables.Add(dtTypeParent);
//2.机关子表
DataTabledtTypeChild=newDataTable();
dtTypeChild.Columns.Add(newDataColumn("TypeID",typeof(int)));
dtTypeChild.Columns.Add(newDataColumn("TypeDetail",typeof(string)));
//给子表增加五笔记录
DataRowdrChild1=dtTypeChild.NewRow();
drChild1["TypeID"]=1;
drChild1["TypeDetail"]="苹果";
dtTypeChild.Rows.Add(drChild1);
DataRowdrChild2=dtTypeChild.NewRow();
drChild2["TypeID"]=1;
drChild2["TypeDetail"]="桔子";
dtTypeChild.Rows.Add(drChild2);
DataRowdrChild3=dtTypeChild.NewRow();
drChild3["TypeID"]=1;
drChild3["TypeDetail"]="喷鼻蕉";
dtTypeChild.Rows.Add(drChild3);
DataRowdrChild4=dtTypeChild.NewRow();
drChild4["TypeID"]=2;
drChild4["TypeDetail"]="呆板人";
dtTypeChild.Rows.Add(drChild4);
DataRowdrChild5=dtTypeChild.NewRow();
drChild5["TypeID"]=2;
drChild5["TypeDetail"]="小汽车";
dtTypeChild.Rows.Add(drChild5);
dtTypeChild.TableName="TypeChild";
ds.Tables.Add(dtTypeChild);
ds.Relations.Add("TypeRelation",
ds.Tables["TypeParent"].Columns["TypeID"],
ds.Tables["TypeChild"].Columns["TypeID"]);
myRepeater.DataSource=ds.Tables["TypeParent"];
Page.DataBind();
}
#regionWeb窗体计划器天生的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该挪用是ASP.NETWeb窗体计划器所必须的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///计划器撑持所需的办法-不要利用代码编纂器修正
///此办法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);
}
#endregion
}
}
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:) 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
页:
[1]