Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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#windows窗体应用程序中将通用列表项绑定到不同的网格_C# - Fatal编程技术网

在c#windows窗体应用程序中将通用列表项绑定到不同的网格

在c#windows窗体应用程序中将通用列表项绑定到不同的网格,c#,C#,我创建了以下类: public interface ISFRDataSet { } public interface ISFRStaticDataSet : ISFRDataSet { } public interface ISFRTransientDataSet : ISFRDataSet { } public class DataSet0 : ISFRStaticDataSet { pub

我创建了以下类:

public interface ISFRDataSet
    {
    }

    public interface ISFRStaticDataSet : ISFRDataSet
    {
    }

    public interface ISFRTransientDataSet : ISFRDataSet
    {
    }


    public class DataSet0 : ISFRStaticDataSet
    {
        public int Id { get; set; }

        public string Text { get; set; }
    }

    public class DataSet1 : ISFRStaticDataSet
    {
    }

    public class DataSet2 : ISFRStaticDataSet
    {
    }

    public class DataSet3 : ISFRTransientDataSet 
    {
    }
然后我创建了一个ISFRDataSet列表,并向其中添加了DataSet1、2和3的实例

Dictionary<string, List<ISFRDataSet>> dsList = new Dictionary<string, List<ISFRDataSet>>();
            dsList.Add("DataSet1", GetDataSet1Data(segmentId));
            dsList.Add("DataSet2", GetDataSet2Data(segmentId));
            dsList.Add("DataSet3", GetDataSet3Data(segmentId));
...

Dictionary dsList=newdictionary();
添加(“DataSet1”,GetDataSet1Data(segmentId));
添加(“DataSet2”,GetDataSet2Data(segmentId));
添加(“DataSet3”,GetDataSet3Data(segmentId));
...
该列表被发送到表单,表单在列表中的每个ISFRDataSet对象上迭代;为每个对象创建网格,并将对象绑定到网格

我希望DataSet1、2和3的公共属性在每个网格中显示为列。但没有显示任何列,我假设是因为ISFRDataSet接口没有任何属性。有没有办法实现我的期望


谢谢

您可以使用此特殊关键字
dynamic
绑定gridview的数据源

就像这个可行的代码,所有网格都会生成列

公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
Dictionary dsList=新字典();
Add(“DataSet1”,GetDataSet1Data());
Add(“DataSet2”,GetDataSet2Data());
Add(“DataSet3”,GetDataSet3Data());
var list1=新绑定列表(DataSetConverter(dsList[“DataSet1”]);
dataGridView1.DataSource=list1;
var list2=新绑定列表(DataSetConverter(dsList[“DataSet2”]);
dataGridView2.DataSource=list2;
var list3=新绑定列表(DataSetConverter(dsList[“DataSet3”]);
dataGridView3.DataSource=list3;
}
私有列表DataSetConverter(列表源),其中TSource:class,ISFRDataSet
{
返回source.Cast().ToList();
}
私有列表GetDataSet3Data()
{
返回新列表
{
新数据集3
{
CreateTime=DateTime.Now.AddDays(1),
Name=“TN1”
},
新数据集3
{
CreateTime=DateTime.Now.AddDays(3),
Name=“TN2”
}
}.Cast().ToList();
}
私有列表GetDataSet2Data()
{
返回新列表
{
新数据集2
{
ProductId=1,
价格=550万美元
},
新数据集2
{
ProductId=2,
价格=660万美元
}
}.Cast().ToList();
}
私有列表GetDataSet1Data()
{
返回新列表
{
新数据集1
{
TestId=1,
TestText=“t1”
},
新数据集1
{
TestId=2,
TestText=“t2”
}
}.Cast().ToList();
}
}
公共接口ISFRDataSet
{
}
公共接口ISFRStaticDataSet:ISFRDataSet
{
}
公共接口ISFRTransientDataSet:ISFRDataSet
{
}
公共类数据集0:ISFRStaticDataSet
{
公共int Id{get;set;}
公共字符串文本{get;set;}
}
公共类数据集1:ISFRStaticDataSet
{
公共int TestId{get;set;}
公共字符串TestText{get;set;}
}
公共类数据集2:ISFRStaticDataSet
{
public int ProductId{get;set;}
公共十进制价格{get;set;}
}
公共类数据集3:ISFRTransientDataSet
{
公共字符串名称{get;set;}
公共日期时间CreateTime{get;set;}
}

请添加您的实现?上面的代码不会在.NET6hi中编译,好的,我刚刚编译过it@userMA如果这个答案对你有帮助,请让我的答案成为最好的答案,谢谢。@userMA请单击这个答案左边的灰色复选标记