我的任务是将Classic ASP项目转换为ASP.Net项目。原始项目中的一个页面使用框架集来构建一个由标题和正文组成的表:
<frameset rows="175, 300, *" marginwidth="0" marginheight="0" border="0" id="frmCommentReport">
<frame src="commentStatusReportHeader.asp?CourseId=<%=Request("CourseId")%>&Id=<%=Request("Id")%>" scrolling="yes" name="header" marginwidth=0 marginheight=0 border=0 />
<frame src="commentStatusReportBody.asp?CourseId= %=Request("CourseId")%>&Id=<%=Request("Id")%>" scrolling="yes" name="body" marginwidth=0 marginheight=0 />
表的标题和正文都是嵌入在每个页面中的vbscript。标头信息来自一个数据源。身体信息来自另一个。
我想做的是,而不是使用两个框架(甚至是一个框架),只需将一个.aspx页面上的信息以ASP:DataGrid控件的形式组合。
作为新手ASP.Net的人,我想知道是否可以使用DataGrid控件?或者,是否有人可以建议的另一种更优选的方法。
我感谢任何建议和指示。
结果如下:
答案 0 :(得分:1)
你最好使用简单的asp:Repeaters。这样,您就可以完全控制用于构建用户界面的CSS和HTML。可以使用asp:DataGrid来实现,但asp:DataGrid太僵硬了。
你要做的是嵌套转发器:
<table>
<asp:Repeater id="rpt1" runat="server>
<tr><td>
<table>
<asp:Repeater ID="rpt2" runat="server">
<tr><td></td></tr>
</asp:Repeater>
</table>
</td></tr>
</asp:Repeater>
</table>
然后在您的代码中,您将绑定父rpt1,然后绑定到rpt1.ItemDataBound:
Protected Sub rpt1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpt1.ItemDataBound
If (item.ItemType = ListItemType.Item Or item.ItemType = ListItemType.AlternatingItem) Then
Dim rpt2 As Repeater = item.FindControl("rpt2")
//Bind More Data
End If
End Sub
这显然是一个简单的例子,你必须扩展到精练所需的U.I.但希望你能看出这种方法有多灵活。此外,您不必将一些大量的数据集绑定到转发器,就像使用asp:DataGrid
一样