ASP Repeater未按正确顺序显示数据

时间:2016-06-14 05:48:31

标签: c# asp.net .net sql-server

我正在尝试使用ASP.NET转发器控件来显示员工数据,我想显示按员工姓名排序的数据。即使我从数据库获得的数据在绑定到转发器之后的顺序正确,但它以不同的方式显示(按员工ID排序)。怎么会发生这种情况?无论如何我可以阻止这个吗?

<asp:Repeater ID="rptEmplist">
 <HeaderTemplate>
   <table class = "bootstrap-datatable datatable">
    <thead>
      <tr>
       <th>Employee No</th>
       <th>Employee Name</th>
       <th>Department Name</th>
      </tr>
    </thead>
    <tbody>
 </HeaderTemplate>
 <ItemTemplate>
   <tr>
   <td><%# Eval("Empnum") %></td>
   <td><%# Eval("Name") %></td>
   <td><%# Eval("DptName") %></td>
   </tr>
 </ItemTemplate>
 <FooterTempalate>
   </tbody>
  </table>
 </FooterTempalate>
</asp:Repeater>

C#databind方法

private void BindDataToGrid()
{
    DataTable empdt = BSL.GetEmployeeList(); // Just a another layer to connect with DB.
    rptEmplist.DataSource = empdt;// Data seems to be in the correct order in empdt
    rptEmplist.DataBind();
}

检索C#的数据:

public static DataTabe GetEmployeeList()
{
    using(SqlCommand cmd = new SqlCommand("Get_EmpList"))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        return DSL.DBFactory.DBOperations.GetDataTable(cmd);
    }
}

数据库存储过程:

Create Proc Get_EmpList
AS
BEGIN
    SELECT * 
    FROM Employee 
    ORDER BY Name
END

2 个答案:

答案 0 :(得分:0)

ASP.NET转发器默认情况下不支持排序,你可以获取列表然后添加linq查询来命令列表

答案 1 :(得分:0)

我不得不删除&#34; bootstrap-datatable datatable&#34;从表中。即使这个类使表格可以排序,它正在覆盖原来的排序顺序我正在喂asp:Repeater

More about datatable