c#
  • asp.net
  • user-controls
  • datalist
  • 2009-11-02 63 views 1 likes 
    1

    我有一個用戶控件內的數據列表被加載到頁面中,用戶可以在其中基於某些複選框自定義報表。ASP.NET C# - 從數據列表中刪除列

    但是,其中一個複選框是「隱藏工作日誌」,它應該隱藏結果集中的工作日誌列,因爲它可能很長並且會干擾報告。

    如果我做的:

    datatable1.Columns.Remove("WorkLog"); 
    

    代碼拋出一個異常,因爲:

    <asp:Label ID="WorkLog" runat="server" Text='<%# Bind("WorkLog") %>'></asp:Label></td> 
    

    不存在。

    我關於用戶控件全錯嗎?這個用戶控件應該總是能夠顯示工作日誌,所以我認爲在那裏綁定它並不壞,但同時我希望能夠隱藏它,如果用戶想要的話。

    回答

    2

    嘗試從數據源中刪除從您的DataList標籤控制,而不是刪除列(即數據表)

    DataList1.Controls.Remove(DataList1.FindControl("WorkLog")); 
    

    你不應該得到一個錯誤if數據源的列數多於您在頁面上顯示的列數,但是,正如您發現的那樣,如果您試圖顯示數據源中不存在的列,則會出現錯誤。

    +0

    是啊..但爲什麼發送數據時,它不是必需的,除非你想用AJAX或其他東西:) – 2009-11-02 19:18:03

    +0

    我怎麼會在數據列表中做到這一點? – somacore 2009-11-02 19:36:38

    +0

    我修改了我的答案。 – 2009-11-03 15:21:01

    0

    檢查一些條件後將其綁定在代碼後面。像

    if (visible) { 
        //bind 
    } 
    

    同時去除控制

    visible = false; 
    

    您可能需要更改可見會話VAR :)

    相關問題