none
一个关开新闻列表的功能 RRS feed

  • 问题

  •  

    通常情况下,做新闻列表时,都是一大堆标题一行一行排下来,那么形如以下的样式该如何实现呢?

     

    Code Snippet

    标题标题标题标题标题标题标题标题标题1

    标题标题标题标题标题标题标题标题标题2

    标题标题标题标题标题标题标题标题标题3

    标题标题标题标题标题标题标题标题标题4

    标题标题标题标题标题标题标题标题标题5

     

    标题标题标题标题标题标题标题标题标题6

    标题标题标题标题标题标题标题标题标题7

    标题标题标题标题标题标题标题标题标题8

    标题标题标题标题标题标题标题标题标题9

    标题标题标题标题标题标题标题标题标题10

     

    标题标题标题标题标题标题标题标题标题11

    标题标题标题标题标题标题标题标题标题12

    标题标题标题标题标题标题标题标题标题13

    标题标题标题标题标题标题标题标题标题14

    标题标题标题标题标题标题标题标题标题15

     

     

    也就是每五行空一行
    2008年4月30日 2:35

答案

  • 思想是与编程语言无关的。

    vb./net仍然有N多种方法实现。下面就是随便找的3种,你拷贝后可以直接运行,看结果

    Code Snippet

     

    <%@ Page Language="VB" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">
      Private Function CreateDataSourceByXianhuiMeng() As System.Data.DataTable
        Dim dt As New System.Data.DataTable()
        Dim dr As System.Data.DataRow
        dt.Columns.Add(New System.Data.DataColumn("学生班级", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("学生姓名", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("语文", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("数学", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("英语", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("计算机", GetType(Decimal)))
        For i As Integer = 0 To 14
          Dim rd As New System.Random(Environment.TickCount * i)
          dr = dt.NewRow()
          dr(0) = "班级" + i.ToString()
          dr(1) = "【孟子E章】" + i.ToString() + "个名字 "
          dr(2) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(3) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(4) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(5) = System.Math.Round(rd.NextDouble() * 100, 2)
          dt.Rows.Add(dr)
        Next
        Return dt
      End Function
      Private TotalRowCount As Integer = 12
      Private numCount As Integer = 0

     
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        '方法1
        Dim strOut As String = ""
        Dim dt As System.Data.DataTable = CreateDataSourceByXianhuiMeng()
        For i As Integer = 0 To dt.Rows.Count - 1
          strOut = strOut + dt.Rows(i)("学生姓名") + (i + 1).ToString() + "<br>"
          If i Mod 5 = 4 Then
            strOut = strOut + "<div style='padding:10px'></div>"
          End If
        Next
        newsList1.Text = strOut
       
        '方法2
        Dim dv As System.Data.DataView = New System.Data.DataView(dt)
        newsList2.DataSource = dv
        newsList2.DataBind()
       
      End Sub

      Dim j As Integer = 0
      Protected Sub newsList2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
          If j Mod 5 = 4 Then
            Dim l As Literal = CType(e.Row.FindControl("c"), Literal)
            l.Text += "</td></tr><tr><td><br><br>"
           
            '方法3
            'l.Text = l.Text + "<br><br><br><br>"
          End If
          j += 1
        End If
      End Sub
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>无标题页</title>
    </head>
    <body>
      <form id="form1" runat="server">
      <div>
        <asp:Literal ID="newsList1" runat="server"></asp:Literal>
      </div>
      <asp:GridView ID="newsList2" runat="server" AutoGenerateColumns="false" ShowHeader="false" OnRowDataBound="newsList2_RowDataBound">
        <Columns>
          <asp:TemplateField>
            <ItemTemplate>
              <asp:Literal ID="c" runat="server" Text='<%#Eval("学生姓名")%>'></asp:Literal>
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>

     

     

    2008年5月5日 0:54
    版主

全部回复

  •  

    加一个变量i = i+ 1

    如果i Mod 5 = 0 就

    多加一行

     

     

    2008年4月30日 3:48
    版主
  •  

    这个是asp里的做法吧?

    在.net里呢?比如数据源被绑定到rpt上以后?

    绑定以后是不是就没办法改了?

    2008年4月30日 3:54
  •  

    也是有办法的。因为你原来的问题描述不具体,所以无法给你实现代码
    2008年4月30日 4:51
    版主
  • 将数据放到临时表,在需要的位置插空数据行

     

    2008年5月4日 6:29
    版主
  •  

    不好意思,过五一了,呵呵
    2008年5月4日 6:40
  •  

    就是vb.net,做网页,新闻中心,新闻列表显示效果:新闻标题每五行(或n行)输出一空白行
    2008年5月4日 6:42
  • 思想是与编程语言无关的。

    vb./net仍然有N多种方法实现。下面就是随便找的3种,你拷贝后可以直接运行,看结果

    Code Snippet

     

    <%@ Page Language="VB" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">
      Private Function CreateDataSourceByXianhuiMeng() As System.Data.DataTable
        Dim dt As New System.Data.DataTable()
        Dim dr As System.Data.DataRow
        dt.Columns.Add(New System.Data.DataColumn("学生班级", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("学生姓名", GetType(String)))
        dt.Columns.Add(New System.Data.DataColumn("语文", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("数学", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("英语", GetType(Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("计算机", GetType(Decimal)))
        For i As Integer = 0 To 14
          Dim rd As New System.Random(Environment.TickCount * i)
          dr = dt.NewRow()
          dr(0) = "班级" + i.ToString()
          dr(1) = "【孟子E章】" + i.ToString() + "个名字 "
          dr(2) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(3) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(4) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(5) = System.Math.Round(rd.NextDouble() * 100, 2)
          dt.Rows.Add(dr)
        Next
        Return dt
      End Function
      Private TotalRowCount As Integer = 12
      Private numCount As Integer = 0

     
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        '方法1
        Dim strOut As String = ""
        Dim dt As System.Data.DataTable = CreateDataSourceByXianhuiMeng()
        For i As Integer = 0 To dt.Rows.Count - 1
          strOut = strOut + dt.Rows(i)("学生姓名") + (i + 1).ToString() + "<br>"
          If i Mod 5 = 4 Then
            strOut = strOut + "<div style='padding:10px'></div>"
          End If
        Next
        newsList1.Text = strOut
       
        '方法2
        Dim dv As System.Data.DataView = New System.Data.DataView(dt)
        newsList2.DataSource = dv
        newsList2.DataBind()
       
      End Sub

      Dim j As Integer = 0
      Protected Sub newsList2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
          If j Mod 5 = 4 Then
            Dim l As Literal = CType(e.Row.FindControl("c"), Literal)
            l.Text += "</td></tr><tr><td><br><br>"
           
            '方法3
            'l.Text = l.Text + "<br><br><br><br>"
          End If
          j += 1
        End If
      End Sub
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>无标题页</title>
    </head>
    <body>
      <form id="form1" runat="server">
      <div>
        <asp:Literal ID="newsList1" runat="server"></asp:Literal>
      </div>
      <asp:GridView ID="newsList2" runat="server" AutoGenerateColumns="false" ShowHeader="false" OnRowDataBound="newsList2_RowDataBound">
        <Columns>
          <asp:TemplateField>
            <ItemTemplate>
              <asp:Literal ID="c" runat="server" Text='<%#Eval("学生姓名")%>'></asp:Literal>
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>

     

     

    2008年5月5日 0:54
    版主
  •  

    谢谢!
    2008年5月5日 1:07