【问题标题】:ASPX page to show multiple records from SQL table (DetailsView approach)ASPX 页面显示 SQL 表中的多条记录(DetailsView 方法)
【发布时间】:2011-12-11 03:08:48
【问题描述】:

场景:在 Page1.aspx 中,用户提交邮政编码和城市并点击回车。然后我将控件传递给带有邮政编码和城市的 Page2.aspx。

在第 2 页中,我将从与邮政编码和城市匹配的表中查询。如果找到,我会得到 1 到 n 条记录。

现在我需要以下面的方式显示记录。


客户名称:Customer1

客户电话:201201201

客户城市:新城


客户名称:Customer2

客户电话:303013010

客户城市:旧城


客户名称:Customer3

客户电话:45646466

客户城市:当前城市


上面的每条记录都是两列,第一列为标题,第二列为值。我想在一个页面中显示最多 8 个客户(上面我显示了 3 个客户),然后输入页码。单击下一页,显示下一组 8 条记录。

请建议最好的控制。我想到了DetailsView,但不知道我是否可以使用Detailsview在一页中显示多达8次。

请提出建议或任何其他替代方案。

【问题讨论】:

    标签: asp.net detailsview


    【解决方案1】:

    这是如何使用中继器控件显示结果的示例......

    ASP.NET Repeater 与 AlternatingItemTemplate、SeparatorTemplate、HeaderTemplate 和 FooterTemplates 以及 ItemTemplate 一起使用。

     <asp:Repeater ID="NewsListRepeater" runat="server">
    
     <HeaderTemplate>Funky Title<br /><br /></HeaderTemplate>
    
      <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem, "SpecialNumber") %><br />
         <%# DataBinder.Eval(Container.DataItem, "SpecialLetters") %><br />
      </ItemTemplate>
    
      <SeparatorTemplate>
         ------<br />
      </SeparatorTemplate>
    
     <AlternatingItemTemplate>
         <i><%# DataBinder.Eval(Container.DataItem, "SpecialNumber") %></i><br />
        <i><%# DataBinder.Eval(Container.DataItem, "SpecialLetters") %></i><br /> 
      </AlternatingItemTemplate>
    
      <FooterTemplate><br />End of the funky stuff</FooterTemplate>
    

    在文件后面的代码中,以下代码用于创建一个DataTable,然后创建一些简单的数据放入DataTable中,仅用于演示目的,然后我们将其绑定到Repeater。在现实世界中,您会将中继器绑定到数据库调用的结果,甚至可能是 XML 文件。

    protected void Page_Load(object sender, EventArgs e)
    {
       // create a datatable
       DataTable newsDataTable = new DataTable();
    
       // add some columns to our datatable
       newsDataTable.Columns.Add("SpecialNumber");
       newsDataTable.Columns.Add("SpecialLetters");
    
       // create some rows in our data
       string _letters = "ABCDE";
      for (int i = 1; i <= 5; i++)
      {
        DataRow newsDataRow = newsDataTable.NewRow();
        newsDataRow["SpecialNumber"] = i;
        newsDataRow["SpecialLetters"] = _letters.Substring(5 -i);
        newsDataTable.Rows.Add(newsDataRow);
      }
    
      // bind our datatable to our repeater
       NewsListRepeater.DataSource = newsDataTable;
      NewsListRepeater.DataBind();
    } 
    

    输出是这样的......

    Funky Title
    
    1
    E
    ------
    2
    DE
    ------
    3
    CDE
    ------
    4
    BCDE
    ------
    5
    ABCDE
    
    End of the funky stuff
    

    希望对你有帮助....

    【讨论】:

      【解决方案2】:

      您可以为此使用任何模板化的数据绑定控件,例如 DataList 或 DataRepeater。

      尝试将其添加到页面并从右键单击选择编辑项目模板命令。然后,您可以在案例中添加您需要的所有控件,例如标签。

      【讨论】:

      • 有没有好的例子可以分享?我也会检查的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2015-03-09
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多