2010-08-17 46 views
1

我有一個ListView約10行。我有這些行的項目模板,它工作正常。我想在此ListView中有兩行,但這些行與項目模板不匹配,因爲它們在第一列中有一個更多的控件。ListView中的多行格式

ListView的佈局基於具有10行和4列的HTML表格。例如,前8列在第一列只有一個ASP.NET TextBox控件,在第一列有一個ASP.NET TextBox控件和一個ASP.NET Label控件。

有沒有解決我的問題?

回答

0

如果您在談論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事件。

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是返回真或假,這取決於標籤是否應顯示或不是一個函數。您應該用您需要測試的任何邏輯來替換它,以查看是否應顯示標籤。