我有一個ListView約10行。我有這些行的項目模板,它工作正常。我想在此ListView中有兩行,但這些行與項目模板不匹配,因爲它們在第一列中有一個更多的控件。ListView中的多行格式
ListView的佈局基於具有10行和4列的HTML表格。例如,前8列在第一列只有一個ASP.NET TextBox控件,在第一列有一個ASP.NET TextBox控件和一個ASP.NET Label控件。
有沒有解決我的問題?
我有一個ListView約10行。我有這些行的項目模板,它工作正常。我想在此ListView中有兩行,但這些行與項目模板不匹配,因爲它們在第一列中有一個更多的控件。ListView中的多行格式
ListView的佈局基於具有10行和4列的HTML表格。例如,前8列在第一列只有一個ASP.NET TextBox控件,在第一列有一個ASP.NET TextBox控件和一個ASP.NET Label控件。
有沒有解決我的問題?
如果您在談論GridView,請考慮以下事項。
綁定網格視圖時考慮到第一列只有一個控件。
使用System.Web.UI.WebControls.GridView.RowDataBound事件在選定行中插入/編輯單個單元格的內容。
對於編輯第八行(基於零的索引),並添加在除了現有的控制標籤控制,
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表示EventArg在RowDataBound事件。
使用所有控件設置您的模板和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是返回真或假,這取決於標籤是否應顯示或不是一個函數。您應該用您需要測試的任何邏輯來替換它,以查看是否應顯示標籤。