ListView中的多行格式

时间:2010-08-17 13:17:12

标签: asp.net listview

我有一个大约有10行的ListView。我有这些行的项目模板,它正常工作。我希望在此ListView中还有两行,但这些行与项目模板不匹配,因为它们在第一列中还有一个控件。

ListView的布局基于一个包含10行和4列的HTML表。例如,前8行在第一列中只有一个ASP.NET TextBox控件,在第二列中有一个ASP.NET TextBox控件和一个ASP.NET Label控件。

我的问题有解决办法吗?

2 个答案:

答案 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的函数,具体取决于是否应显示标签。您应该使用您需要测试的任何逻辑来替换它,以查看是否应该显示标签。