![](/img/trans.png)
[英]How Specify columns at list to show in DataSource GridView? C#
[英]How to add a gridview to a C# winforms project with a list of objects as the datasource
我正在Visual Studio 2015社區中使用C#構建Winforms應用程序。 在這個項目中,我有一個這樣構建的類:
public class EDIFile
{
public string fullInFilePath { get; set; }
public string fullOutFilePath { get; set; }
public string InfileName { get; set; }
public string OutfileName { get; set; }
public string UniqueID { get; set; }
public DateTime infileDateTime { get; set; }
public DateTime outfileDateTime { get; set; }
public TimeSpan timeDiff { get; set; }
}
我有一個此類的清單。 加載后,我想要一個包含此列表內容的gridview。 我看了網上,找到了兩個解決方案,但沒有一個對我有用。 如果可以的話,請通過一些具體說明幫助我。 提前致謝。
我還沒有得到它為我工作。 基於這兩個答案,這里是我到目前為止的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProviderPayProject1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load_1(object sender, List<EDIFile> EDIFiles)
{
DataGridView dataGridView1 = new DataGridView();
dataGridView1.AutoGenerateColumns = true;
Controls.Add(dataGridView1);
dataGridView1.DataSource = EDIFiles;
}
}
}
這是“ form1”中調用的“ form2”中的代碼。 所有“ form2”應該做的就是基於傳遞到表單的列表加載並填充datagridview。 請幫助我知道我在做什么錯。
不能完全確定我理解您的問題,如果您希望通過代碼創建DataGridView
,則可以這樣做。
List<EDIFile> data; // construct your data.
DataGridView grid = new DataGridView();
grid.AutoGenerateColumns = true;
this.Controls.Add(grid);
grid.DataSource = data;
其他選項,通過設計器添加DataGidView
控件並設置DataSource
。
ex..
List<EDIFile> data; // construct your data.
dataGridView1.DataSource =data;
您可以使用以下代碼,它非常簡單。 加載表單后,它將設置DataGridViews數據源。
步驟非常簡單:
DataGridView
並將其命名。 在此示例中,其簡單命名為dataGridView1
。 不過,您需要自己弄清楚這一步 。 DataSource
,在此示例中,是在窗體加載時設置的Form1_Load()
函數。 您可以通過單擊按鈕來執行此操作。 List<EDIFile>
列表。 在此示例中, GetDataGridViewData()
返回List<EDIFile>
。 它基本上會創建10個虛擬EDIFile
對象 DataGridView
DataSource
假設您具有第一步的winform,則應該能夠將名稱空間WindowsFormsApplication1
和Form類Form1
更改為所需的名稱:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// the list of EDFiles
public List<EDIFile> EDFiles { get; set; }
public Form1()
{
InitializeComponent();
Load += Form1_Load; // add Form Load eventhandler
}
/// <summary>
/// Called when the form is loaded
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
// get dummy data
EDFiles = GetDataGridViewData();
// set datasource to the dummy data
dataGridView1.DataSource = EDFiles;
}
/// <summary>
/// Returns dummy data for the datagridview
/// </summary>
/// <returns></returns>
private List<EDIFile> GetDataGridViewData()
{
// bascially just creates dummy data for the example,
// you'll need to implement based on how you need it to be
var newEDFiles = new List<EDIFile>();
Random random = new Random();
for (int i = 1; i <= 10; i++)
{
int randomNumber = random.Next(0, 100);
var infileDateTime = DateTime.Now;
var outfileDateTime = infileDateTime.AddDays(randomNumber);
var edfile = new EDIFile()
{
fullInFilePath = "fullInFilePath" + i,
fullOutFilePath = "fullOutFilePath" + i,
InfileName = "InfileName" + i,
OutfileName = "InfileName" + i,
UniqueID = "UniqueID" + i,
infileDateTime = infileDateTime,
outfileDateTime = outfileDateTime,
timeDiff = outfileDateTime- infileDateTime
};
newEDFiles.Add(edfile);
}
return newEDFiles;
}
}
public class EDIFile
{
public string fullInFilePath { get; set; }
public string fullOutFilePath { get; set; }
public string InfileName { get; set; }
public string OutfileName { get; set; }
public string UniqueID { get; set; }
public DateTime infileDateTime { get; set; }
public DateTime outfileDateTime { get; set; }
public TimeSpan timeDiff { get; set; }
}
}
在按鈕單擊事件的Form1
類中,您將需要以下內容:
var f2 = new Form2();
f2.ShowForm(GetDataGridViewData());
Form2
類應如下所示:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void ShowForm(List<EDIFile> EDIFiles)
{
DataGridView dataGridView1 = new DataGridView();
dataGridView1.AutoGenerateColumns = true;
Controls.Add(dataGridView1);
dataGridView1.DataSource = EDIFiles;
this.ShowDialog();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.