小白,求助

zhangzhen900530 2012-01-09 09:23:22
    
stock 类
/// <summary>
/// 下载状态
/// </summary>
public enum Ds { 初始 = 0, 成功 = 1, 失败 = 2 }

/// <summary>
/// 转换状态
/// </summary>
public enum Ts { 初始 = 0, 成功 = 1, 失败 = 2 }

/// <summary>
/// 来源网站
/// </summary>
public enum SourceWebsite { 理想论坛, 海风股份论坛, 迈博汇金, 汗牛网, 渐飞数据, 人大经济论坛, 赢富阁, 正点财经, 讯嘉数据, 百思社区 }

/// <summary>
/// 论坛表
/// </summary>
public class Stock
{
public Stock()
{
Tstatus = new Dictionary<string, Ts>();

Tstatus.Add("默认", Ts.初始);

Reports = new List<Report>() { new Report { Dstatus = Ds.初始 } };
}

/// <summary>
/// ID
/// </summary>
public SourceWebsite ID { get; set; }

/// <summary>
/// 信息集合
/// </summary>
public List<Report> Reports { get; set; }

/// <summary>
/// 转换状态集合
/// </summary>
public Dictionary<string, Ts> Tstatus { get; set; }

}

/// <summary>
/// 信息集合
/// </summary>
public class Report
{
/// <summary>
/// 研报标题
/// </summary>
public string Title { get; set; }

/// <summary>
/// 下载网址
/// </summary>
public string Uri { get; set; }

/// <summary>
/// 下载时间
/// </summary>
public DateTime DownloadTime { get; set; }

/// <summary>
/// 下载状态
/// </summary>
public Ds Dstatus { get; set; }

/// <summary>
/// 路径
/// </summary>
public string Path { get; set; }
}



代码
private List<Stock> test()
{
List<Stock> list = new List<Stock>();

stock.ID = SourceWebsite.百思社区;
stock.Reports = new List<Report>() { new Report() { Title = "测试1", Dstatus = Ds.成功, DownloadTime = DateTime.Now, Path = "f", Uri = "www.baidu.com" } };
stock.Tstatus.Add("测试1", Ts.成功);
list.Add(stock);
return list;
}


想问下 dataGridView如何绑定,直接绑定test()方法,不行啊
效果如下

我的Reports没显示出来,Tstatus也显示的集合
...全文
267 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2012-01-09
  • 打赏
  • 举报
回复
你是想嵌套显示 还是怎么显示

贴个效果图
熙风 2012-01-09
  • 打赏
  • 举报
回复
DataGridView的DataPropertyName为 stock.Reports.Title 这些就可以了。。。
熙风 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangzhen900530 的回复:]
引用 2 楼 happy09li 的回复:

用对象去点出你的属性

stock.ID
stock.Reports.?
stock.Tstatus.?

怎么点啊
[/Quote]


stock.Reports.Title;
stock.Reports.Uri;
stock.Reports.DownLoadTime;
stock.Reports.DStatus;
stock.Reports.Path;

stock.Tstatus.?

这就可以显示Reports的信息了。
zhangzhen900530 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnwin 的回复:]

可以将list设为数据源的,你的test()返回值是List<T>,可以做为数据源。
[/Quote]
设为数据源的话显示出来如下,不是我想要的效果啊
cnwin 2012-01-09
  • 打赏
  • 举报
回复
可以将list设为数据源的,你的test()返回值是List<T>,可以做为数据源。
zhangzhen900530 2012-01-09
  • 打赏
  • 举报
回复
            foreach (var item in test())
{
dataGridView1.DataSource = item.Reports;
}

这样 的话 Reports倒是可以显示出来,我id和Tstatus要如何显示呢
我想实现 在如下图 的前后 把id 和Tstatus也显示出来
zhangzhen900530 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happy09li 的回复:]

用对象去点出你的属性

stock.ID
stock.Reports.?
stock.Tstatus.?
[/Quote]
怎么点啊
zhangzhen900530 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

dataGridView可以绑定dataset,数组等,你那不是已经有数据了吗
[/Quote]
我想把我的Reports内容也显示出来啊
熙风 2012-01-09
  • 打赏
  • 举报
回复
把相应的字段显示出来就可以了。。。
熙风 2012-01-09
  • 打赏
  • 举报
回复
用对象去点出你的属性

stock.ID
stock.Reports.?
stock.Tstatus.?
bdmh 2012-01-09
  • 打赏
  • 举报
回复
dataGridView可以绑定dataset,数组等,你那不是已经有数据了吗
风骑士之怒 2012-01-09
  • 打赏
  • 举报
回复

public class Report
{
/// <summary>
/// 研报标题
/// </summary>
public string Title { get; set; }

/// <summary>
/// 下载网址
/// </summary>
public string Uri { get; set; }

/// <summary>
/// 下载时间
/// </summary>
public DateTime DownloadTime { get; set; }

/// <summary>
/// 下载状态
/// </summary>
public Ds Dstatus { get; set; }

/// <summary>
/// 路径
/// </summary>
public string Path { get; set; }

public override string ToString()
{
return string.Format("标题:{0} 链接:{1} 下载时间:{2} 下载状态:{3} 路径:{4}", Title, Uri, DownloadTime, Dstatus, Path);
}
}



public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
var q = (from c in test()
select new
{
ID = c.ID,
Reports = string.Join(" ", from t in c.Reports
select t.ToString()),
Tstatus = string.Join(" ", from t in c.Tstatus
select string.Format("测试名:{0} 结果:{1}", t.Key, t.Value)),
}).ToList();


dataGridView1.DataSource = q;
}

private List<Stock> test()
{
List<Stock> list = new List<Stock>();

Stock stock = new Stock();
stock.ID = SourceWebsite.百思社区;
stock.Reports = new List<Report>() {
new Report() { Title = "测试1", Dstatus = Ds.成功, DownloadTime = DateTime.Now, Path = "f", Uri = "www.baidu.com" },
new Report() { Title = "测试1", Dstatus = Ds.成功, DownloadTime = DateTime.Now, Path = "f", Uri = "www.baidu.com" }
};

stock.Tstatus.Add("测试1", Ts.成功);
stock.Tstatus.Add("测试2", Ts.失败);

list.Add(stock);

return list;
}
}


后续格式扩展,自己思考下
暖枫无敌 2012-01-09
  • 打赏
  • 举报
回复
实体嵌套是有问题的

在设计面选择DATAGRID右上角的设置 里面绑定
haiyun141 2012-01-09
  • 打赏
  • 举报
回复
你绑定的数据源是个集合,集合里又包含一个集合
你要把一个集合对象绑定到一个字段上,好像这样实现不了
你可以把这个集合stock.Tstatus转为string型,自己重载tostring方法
再绑定到 DataGridView
要不就用Repeater控件,里面在嵌套一个Repeater,第一个绑定 test()
第二个绑定stock.Tstatus
丰云 2012-01-09
  • 打赏
  • 举报
回复
重新定义一个集合,
把需要显示的字段全部平行的放进这个新集合,不要嵌套。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧