2017-05-04 39 views
3

在c#中我將如何最好地處理這種情況,表單包含大量複選框100+,這些複選框映射到數據存儲中的列/字段,並且用戶可以選擇任何一位。根據他們在提交表單時選擇的內容,我將生成一個csv輸出的數據,但只顯示他們所請求的字段(列)。在運行時根據用戶輸入在動態追加字段#

list myData = getAllTheData 
var fieldstheychose = "name, mileage, address" 

      foreach (var item in mydata) 
       { 
       var somedata = new StringBuilder(); 

       // make decision to include field or not 
       somedata.Append(item.name.formatvalue() + ","); 
       // make decision to include field or not 
       somedata.Append(item.mileage.GetCSVEncodedValue() + ","); 
       // make decision to include field or not 
       somedata.Append(item.address.ToDisplayString() + ","); 

       // make decision on 100+ fields that might be in the fieldstheychose list depending on their choices 
     } 
    return somedata; 

我需要在運行時決定哪些字段將上述追加,但我想避免,如果超過100塊來決定耐候追加數據。

我確實看過動態對象和expando對象,但我不確定它在這種情況下有幫助。

任何意見讚賞。

+0

這些複選框是否在winforms面板上? – RH6

+0

對不起,我應該明確說明,他們是一個asp.net的形式 – 78lro

+0

做了一些編輯,以使之清楚,直到用戶選擇他們希望在運行時包含哪些字段,我不知道哪個項目。價值將需要包括沒有多個條件,並列出所有100個 – 78lro

回答

0
List<ListItem> selected = new List<ListItem>(); 
foreach (ListItem item in YourCheckBoxListID) 
    if (item.Selected) 
     selected.Add(item); 

這將存儲已經檢查的ListItems,假設您使用的是CheckBoxList。從那裏你可以遍歷你選擇的列表並將條目轉換爲適當的csv格式。

0

給出複選框的名稱與列表mydata中的相同。循環訪問列表並使用findControl()函數找到您的複選框,以獲取複選框的布爾值。將它添加到列表中。

+0

所以我想你想說的是不同的領域有不同的數據類型。您可以在數據庫或代碼中創建一個字典,以確定您想要在不同字段上進行的轉換類型,然後爲每種類型創建if條件。 –

+0

是的你的權利,爲每個字符串字段值不同的數據類型,我儘可能地減少了如果條件的數量,因爲可能會有大量的字段從頁面中通過 – 78lro

+0

是的,你可以實現使用類型字典 –