今天接到一个需求,一个列表页,前面几列是固定的,后面的列需要解析数据,根据解析出来的数据动态显示列。
下面代码中,Column是动态列的列明,类型为List<string>的全局变量,dt1是动态列的数据源,类型为DataTable的全局变量
public List<string> Column = new List<string>();
public DataTable dt1 = new DataTable();
<div class="content">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="table" style="margin: auto; overflow: auto; margin-top: 10px;width:2100px;">
<table id="tableList" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>城市名称</th>
<th>监测点</th>
<th>数据类型</th>
<th>时间</th>
<th>设备类型</th>
<% foreach (string column in Column)
{ %>
<th><%=column+"km"%></th>
<%} %>
</tr>
</thead>
<tbody id="listbody">
<% int i = 0; //奇偶行的标志变量,用0、1标记
foreach (System.Data.DataRow dr in dt1.Rows)
{
if (0 == i)
{
i = 1; %>
<tr class="">
<%}
else
{
i = 0; %>
<tr class="gray">
<%}%>
<td><%=dr["city_name"] %></td>
<td><%=dr["remark"] %></td>
<td><%=dr["lddatatype"] %></td>
<td><%=dr["time"] %></td>
<td><%=dr["devicetype"] %></td>
<%foreach (string column in Column)
{ %>
<td><%=dr[""+column+""].ToString()==""?"":Math.Round(Convert.ToDecimal(dr[""+column+""]),3).ToString() %></td>
<%} %>
</tr>
<%}%>
<%--<asp:Repeater runat="server" ID="rptData">
<ItemTemplate>
<tr class="">
<td><%#Eval("city_name") %></td>
<td><%#Eval("remark") %></td>
<th><%#Eval("siteid") %></th>
<th><%#Eval("deviceid") %></th>
<th><%#Eval("lddatatype") %></th>
<th><%#Eval("time") %></th>
<th><%#Eval("devicetype") %></th>
<% foreach (string column in Column)
{ %>
<th><%=Eval(""+column+"")%></th>
<%} %>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="gray">
<td><%#Eval("city_name") %></td>
<td><%#Eval("remark") %></td>
<th><%#Eval("siteid") %></th>
<th><%#Eval("deviceid") %></th>
<th><%#Eval("lddatatype") %></th>
<th><%#Eval("time") %></th>
<th><%#Eval("devicetype") %></th>
<% foreach (string column in Column)
{ %>
<th><%=Eval(""+column+"")%></th>
<%} %>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<asp:Label ID="noList" Text="<tr bgcolor='#FFFFFF'><td colspan='6'>暂无符合条件的记录!</td></tr>" runat="server" Visible='<%#bool.Parse((rptData.Items.Count==0).ToString())%>'></asp:Label>
</FooterTemplate>
</asp:Repeater>--%>
</tbody>
</table>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<input type="hidden" id="hidRoleID" runat="server" value="" />
</div>
效果类似下图,汉字列是固定列,后面的数字列是动态解析的列
微信扫码关注公众号,一起学习进步,里面有.Net相关满满的干货,等你来拿。