[英]c# dataGridView for loop to add data
使用for循環生成數字,1-100,並將每個數字添加到dataGridView
在我嘗試使用我的代碼后,我只顯示了一行,也就是最后 100 行。
public void aaa(int i) {
DataTable dt = new DataTable();
dt.Columns.Add("host");
DataRow dr = dt.NewRow();
for (int a = 1; a <= i; a++)
{
dr[a] = i;
}
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e) {
for (int i = 1; i <= 254; i++)
{
aaa(i);
}
}
你的btn_click
功能。 每個循環都會在aaa(i)
函數內初始化或創建一個新對象
每次在 for 循環中調用aaa(i)
都會調用DataTable dt = new DataTable()
public void aaa(int i)
{
DataTable dt = new DataTable(); ///this will initialize every time, a new data table will be created every loop
dt.Columns.Add("host");
DataRow dr = dt.NewRow();
for (int a = 1; a <= i; a++)
{
dr[a] = i;
}
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
}
}
我是否建議您在aaa(i)
函數中傳遞254
int 並在內部執行循環
private void button1_Click(object sender, EventArgs e)
{
aaa(254);
}
public void aaa(int i) //value of i = 254
{
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
for (var s = 0; s <= i; s++ ) {
for (int a = 1; a <= i; a++)
{
dr[a] = i;
}
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
}
}
}
或者,如果按鈕中循環的原因只是因為 void aaa
內循環中的數量限制,那么您可以將其簡化為
public void aaa(int i) //value of i = 254
{
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
for (int a = 1; a <= i; a++)
{
dr[a] = i;
}
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
}
}
我自己想到了可用的解決方案。
DataTable dt = new DataTable();
dt.Columns.Add("number");
int i = 10;
int a = 0;
while (a<=i)
{
DataRow dr = dt.NewRow();
a++;
dr[0] = a;
dt.Rows.Add(dr);
}
this.dataGridView1.DataSource = dt;
我總是那樣做
ListCollectionView collectionView;
collectionView = new ListCollectionView(*your list of items*);
datagridView1.ItemSource = collectionView;
像這樣實施為您提供了未來用於排序、過濾等的開放方式。 這里是 ms 文檔的鏈接。 您可以在其中找到有關listCollectionView
更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.