根据c#中的用户输入在运行时动态追加字段

时间:2017-05-04 14:30:53

标签: c# asp.net dynamic runtime

在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 + if块来决定追加数据的天气。

我确实看过动态对象和expando对象,但我不确定它在这种情况下有用。

任何观点赞赏。

2 个答案:

答案 0 :(得分:0)

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

这将存储已经检查过的ListItem,假设您使用的是CheckBoxList。从那里,您可以遍历所选列表并将条目转换为适当的csv格式。

答案 1 :(得分:0)

将复选框的名称与列表mydata中的名称相同。循环遍历列表并使用findControl()函数找到您的复选框,以获取复选框选中的布尔值。将其添加到列表中。