Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库生成WPF中的复选框或可选按钮_C#_Wpf_Linq_Mvvm - Fatal编程技术网

C# 从数据库生成WPF中的复选框或可选按钮

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

我是C新手,需要一点帮助。我想从csvsemicolon分隔的数据库中导入一个包含三列的表。然后我要遍历表中的所有行,获取所有具有值的行,然后根据值显示复选框或某种类型的多个可选按钮。我不知道怎么做,所以我刚刚开始尝试从数据库导入数据。以下是我的代码:

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

现在,您将拥有数据对象的列表; 你可以用很多方法来做,但我会这样做:
创建您自己的控件,如子窗口,在该控件中,您将有一个网格,您可以根据需要创建行和列,并将按钮/复选框等与参数放在其中,或者当然,在窗口上创建一些网格并在窗口中创建。cs

OP不必使用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]
        });            
    }