C# 从数据库生成WPF中的复选框或可选按钮
我是C新手,需要一点帮助。我想从csvsemicolon分隔的数据库中导入一个包含三列的表。然后我要遍历表中的所有行,获取所有具有值的行,然后根据值显示复选框或某种类型的多个可选按钮。我不知道怎么做,所以我刚刚开始尝试从数据库导入数据。以下是我的代码:C# 从数据库生成WPF中的复选框或可选按钮,c#,wpf,linq,mvvm,C#,Wpf,Linq,Mvvm,我是C新手,需要一点帮助。我想从csvsemicolon分隔的数据库中导入一个包含三列的表。然后我要遍历表中的所有行,获取所有具有值的行,然后根据值显示复选框或某种类型的多个可选按钮。我不知道怎么做,所以我刚刚开始尝试从数据库导入数据。以下是我的代码: class Nettstasjoner { public string NS { get; set; } public string Sek { get; set; } public s
class Nettstasjoner
{
public string NS { get; set; }
public string Sek { get; set; }
public string Radial { get; set; }
public string Value { get; set; }
Value = "H812"; //this will be set from a button later
static void Main(string[] args)
{
IEnumerable<string> strCSV =
File.ReadLines(@"C:\Users\thomoe\Desktop\SMSvarsel\nsdatabase.csv");
var results = from str in strCSV
let tmp = str.Split(';')
select new
{
NS = tmp[0],
Sek = tmp[1],
Radial = tmp[2]
};
foreach (var tmp in results)
{
//here I need to select all rows with the Value value in it and make a checkbox or something with the captin from the row NS(tmp[0]).
}
}
}
我对其他的方法非常开放,包括MVVM,我只是试着用谷歌搜索等等。但现在我被困住了。非常感谢您的帮助,请在回答时非常具体;我对C的理解仍然很模糊:您已经有了一个数据集合 首先,通过显式类消色使集合更像对象:
public class MyModel
{
public string NS { get; set; }
public string Sek { get; set; }
public string Radial { get; set; }
}
并将代码更改为
select new MyModel
{
NS = tmp[0],
Sek = tmp[1],
Radial = tmp[2]
};
接下来,您需要在视图中使用其中一个选项,例如,或与自定义选项一起使用,该选项将为您的模型类显示一个复选框和任何其他内容
最后,需要使用将集合从ViewModel绑定到ListView
这不是完整的解决方案,但我希望它能帮助您理解主要原理。您必须使用TextFieldParser
现在,您将拥有数据对象的列表;
你可以用很多方法来做,但我会这样做:
创建您自己的控件,如子窗口,在该控件中,您将有一个网格,您可以根据需要创建行和列,并将按钮/复选框等与参数放在其中,或者当然,在窗口上创建一些网格并在窗口中创建。csOP不必使用TextFieldParser类,但这可能是一种比直接用String.Split解析CSV更好的方法。他当然不是,但如果他只使用CSV,而不使用xsl、xml、json等其他格式,这将是一种很好的方法。
TextFieldParser parser = new TextFieldParser(@"C:\Users\thomoe\Desktop\SMSvarsel\nsdatabase.csv");
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(";");
List<MyStruct> myData = new List<MysTruct>();
while (!parser.EndOfData)
{
//Process row
string[] fields = parser.ReadFields();
myData.Add(new MyStruct()
{
NS = fields[0],
Sek = fields[1],
Radial = fields[2]
});
}