在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对象,但我不确定它在这种情况下有用。
任何观点赞赏。
答案 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()函数找到您的复选框,以获取复选框选中的布尔值。将其添加到列表中。