0

我的任务是将经典 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 控件是否可行?或者,是否有人可以建议另一种更可取的方法。

我感谢任何建议和指示。

结果如下所示: 在此处输入图像描述

4

1 回答 1

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

显然,这是一个简单的示例,您必须对其进行扩展以优化所需的 UI,但希望您能看到这种方法的灵活性。此外,您不必像使用 asp:DataGrid 那样将一些大量的旋转数据集绑定到中继器

于 2013-08-21T19:23:25.557 回答