C# 在运行时根据c中的用户输入动态追加字段
在c语言中,如何最好地处理这种情况,表单包含大量的复选框100+,这些复选框映射到数据存储中的列/字段,用户可以选择其中任何一个。根据他们提交表单时选择的内容,我将生成数据的csv输出,但仅显示他们请求的字段列C# 在运行时根据c中的用户输入动态追加字段,c#,asp.net,dynamic,runtime,C#,Asp.net,Dynamic,Runtime,在c语言中,如何最好地处理这种情况,表单包含大量的复选框100+,这些复选框映射到数据存储中的列/字段,用户可以选择其中任何一个。根据他们提交表单时选择的内容,我将生成数据的csv输出,但仅显示他们请求的字段列 list myData = getAllTheData var fieldstheychose = "name, mileage, address" foreach (var item in mydata) {
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对象,但我不确定它在这个场景中是否有用
欢迎提出任何意见
List<ListItem> selected = new List<ListItem>();
foreach (ListItem item in YourCheckBoxListID)
if (item.Selected)
selected.Add(item);
这将存储已检查的ListItems(假设您使用的是CheckBoxList)。从那里,您可以遍历所选列表,并将条目转换为正确的csv格式。将复选框的名称与列表mydata中的名称相同。循环浏览列表,并使用findControl函数查找复选框,以获得复选框选中的布尔值。将其添加到列表中 这些复选框是在winforms面板上吗?对不起,不,我应该说清楚,它们是asp.net表单。在用户选择要在运行时包含哪些字段之前,我不知道要包含哪些项,但在上面做了一些编辑以使其更清楚。值将需要包括在没有多个if条件的情况下,并列出所有100个条件,所以我认为您试图说的是,不同字段有不同的数据类型。您可以在DB或代码中创建字典,以确定要在不同字段上进行的转换类型,然后为每种类型创建if条件。是的,您的权利,每个字符串字段值的不同数据类型,我正在尽可能减少if条件的数量,由于页面中可能有大量字段,因此可以使用类型字典来实现这一点