我有一个大约有10行的ListView。我有这些行的项目模板,它正常工作。我希望在此ListView中还有两行,但这些行与项目模板不匹配,因为它们在第一列中还有一个控件。
ListView的布局基于一个包含10行和4列的HTML表。例如,前8行在第一列中只有一个ASP.NET TextBox控件,在第二列中有一个ASP.NET TextBox控件和一个ASP.NET Label控件。
我的问题有解决办法吗?
答案 0 :(得分:0)
如果您正在谈论GridView,请考虑以下事项。
在考虑第一列只有一个控件的情况下绑定网格视图。
使用System.Web.UI.WebControls.GridView.RowDataBound事件插入/编辑所选行中单个单元格的内容。
编辑第8行(基于零的索引),并在现有控件之外添加Label Control,
if (e.Row.RowIndex == 8)
{
System.Web.UI.WebControls.Label label = new System.Web.UI.WebControls.Label();
label.Text = "MyRow";
e.Row.Cells[0].Controls.AddAt(0, label);
}
其中e表示RowDataBound事件中的EventArg。
答案 1 :(得分:0)
使用所有控件设置模板和HTML表格 - 包括文本框和“特殊”行的标签。
在ListView的ItemDataBound事件中,您可以测试是否应该显示额外的控件,如果没有,则可以隐藏它。
Private Sub MyListView_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles MyListView.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or _
e.Item.ItemType = ListItemType.AlternatingItem Then
Dim MyLabel As Label = DirectCast(e.Item.FindControl("MyLabel"), Label)
MyLabel.Visible = ShowLabel()
End If
End Sub
在上面的代码中,ShowLabel是一个返回True或False的函数,具体取决于是否应显示标签。您应该使用您需要测试的任何逻辑来替换它,以查看是否应该显示标签。