这里使用了2个Repeater,算是一种比较笨的方法,如果有更好地方法请留言联系我。
代码如下:
HTML代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="btnDataList" runat="server" Text="显示多条用户信息" OnClick="BtnData_Click" /> <asp:Button ID="btnDataObj" runat="server" Text="显示详细用户信息" OnClick="BtnData_Click" /> <asp:Repeater ID="repeaterList" runat="server"> <HeaderTemplate> <table> <tr> <th> 姓名 </th> <th> 年龄 </th> <th> 分数 </th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <%#Eval("Name") %> </td> <td> <%#Eval("Age") %> </td> <td> <%#Eval("Score") %> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> <asp:Repeater ID="repeaterObj" runat="server"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td> 姓名: </td> <td> <%#Eval("Name") %> </td> </tr> <tr> <td> 年龄: </td> <td> <%#Eval("Age") %> </td> </tr> <tr> <td> 分数: </td> <td> <%#Eval("Score") %> </td> </tr> <tr> <td> 地址: </td> <td> <%#Eval("Address") %> </td> </tr> <tr> <td> 学校: </td> <td> <%#Eval("School") %> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </div> </form> </body> </html>
后台C#代码:
public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 模拟数据 多跳数据时 /// </summary> /// <returns>成绩数据</returns> public DataTable GetDataList() { //模拟数据 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age"); dt.Columns.Add("Score"); dt.Columns["Name"].DataType = typeof(string); dt.Columns["Age"].DataType = typeof(Int32); dt.Columns["Score"].DataType = typeof(Int32); DataRow dr = dt.NewRow(); dr["Name"] = "张三"; dr["Age"] = 18; dr["Score"] = 89; dt.Rows.Add(dr); DataRow dr1 = dt.NewRow(); dr1["Name"] = "李四"; dr1["Age"] = 21; dr1["Score"] = 99; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["Name"] = "王五"; dr2["Age"] = 19; dr2["Score"] = 82; dt.Rows.Add(dr2); DataRow dr3 = dt.NewRow(); dr3["Name"] = "赵六"; dr3["Age"] = 18; dr3["Score"] = 89; dt.Rows.Add(dr3); return dt; } /// <summary> /// 模拟数据 一条数据时 /// </summary> /// <returns></returns> public DataTable GetDataObj() { //模拟数据 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age"); dt.Columns.Add("Score"); dt.Columns.Add("Address"); dt.Columns.Add("School"); dt.Columns["Name"].DataType = typeof(string); dt.Columns["Age"].DataType = typeof(Int32); dt.Columns["Score"].DataType = typeof(Int32); dt.Columns["Address"].DataType = typeof(string); dt.Columns["School"].DataType = typeof(string); DataRow dr = dt.NewRow(); dr["Name"] = "张三"; dr["Age"] = 18; dr["Score"] = 89; dr["Address"] = "北京"; dr["School"] = "第二十八中学"; dt.Rows.Add(dr); return dt; } /// <summary> /// 根据数据源展示不同模板 /// </summary> /// <param name="dt"></param> public void ShowDataResult(DataTable dt) { if (dt.Columns.Count<=3) //这里的条件可根据实际数据信息改变 { this.repeaterList.DataSource = dt; this.repeaterList.DataBind(); this.repeaterList.Visible = true; this.repeaterObj.Visible = false; } else { this.repeaterObj.DataSource = dt; this.repeaterObj.DataBind(); this.repeaterObj.Visible = true; this.repeaterList.Visible = false; } } /// <summary> /// 点击Button触发事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void BtnData_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn.Text.Equals(this.btnDataList.Text)) { ShowDataResult(GetDataList()); } else { ShowDataResult(GetDataObj()); } } }