我希望动态地改变ListView的ItemTemplate中的列数:
<asp:ListView runat="server" ID="ReportListView" DataSourceID="ReportListViewSDS">
<LayoutTemplate>
<table>
<tr>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<!-- need to dynamically create the number of columns in the code behind
based on the select statement in the SelectCommand -->
</ItemTemplate>
</asp:ListView>
然后在后面的代码中,我得到了:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Based on The Request.Form variables sent, the SQL command will
' select x number of columns:
' SqlStatement = "SELECT " for each Request.Form values " FROM staff"
' example: "SELECT Fname, Lname, email, phone FROM staff"
' Run sql command.
' that all works, the question now is how do i change the ItemTemplate
' so that it has the correct number of columns. Something like this: (pseudo code)
For each row found in sql command
ReportListView.ItemTemplate.Add( "<tr>" )
For each Request.Form as i
ReportLIstView.ItemTemplate.Add( "<td>" & sqlresult(i) & "</td>" )
Next
ReportListView.ItemTemplate.Add( "</tr>" )
Next
End Sub
也许还有别的办法,但这是迄今为止唯一的想法。新手asp.net,有什么建议,非常欢迎!谢谢!
5条答案
按热度按时间bbmckpt71#
我觉得你得换个方式了。试试这样的东西:
语法可能并不完美,但请尝试在后面的代码中执行以下操作:
vuv7lop32#
另一种方法是以相同的方式设置ItemTemplate,但由于您使用的是数据绑定控件,因此您可能希望利用listview的DataBound事件。这种语法可能并不完美,因为你可能使用了不同的集合来绑定到列表(这将在查询执行后完成),但这应该会让你走上正确的道路:
我通常会使用一个中继器为这种类型的工作,因为它是裸露的骨头和轻量级。从我所看到的,你真的没有利用任何列表视图功能。
nfg76nw03#
使用我收到的答案的组合,这是我要做的:
代码隐藏:
非常感谢其他2个答案的方向,这肯定让我90%,只是其他几个调整,我很好去。谢谢!
vatpfxk54#
我用这段代码来隐藏项目模板中的元素
shyt4zoc5#
我有一个ListView类似的例子与动态控件添加占位符。我无法在页面保存中恢复值,有人能帮忙吗?