gpt4 book ai didi

c# - 如何从数据 GridView 加载列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:18 25 4
gpt4 key购买 nike

我有一个 GridView ,我正在尝试使用 GridView 中的一列加载列表,但我收到空引用异常

我试过了

    public static List<string> LoadStringList()
{
List<string> stringList = new List<string>();

if (contactDataGridView.RowCount != 0)
{
for (int i = 0; i < contactDataGridView.Rows.Count; i++)
{
stringList.Add((string)contactDataGridView.Rows[i].Cells[2].Value);
}

}
return stringList;
}

我试过了

    public static List<string> LoadStringList()
{
List<string> stringList = new List<string>();

if (frmPRG299.mainForm.contactDataGridView.RowCount != 0)
{
for (int i = 0; i <frmPRG299.mainForm.contactDataGridView.Rows.Count; i++)
{
stringList.Add((string)frmPRG299.mainForm.contactDataGridView.Rows[i].Cells[2].Value);
}

}
return stringList;
}

进一步的解释

我有两种形式 frmMain 和 frmSub,其中 gridview 在 frmMain 中,组合框在 frmSub 我需要调用函数 LoadStringList() 来填充组合框

最佳答案

使用允许您引用对象(在本例中为 Control)的方法,并将对该对象的引用传递给该方法。
没有硬编码的对象引用,您的方法更加灵活。

在这里,我将 DataGridView 控件引用和要从中提取当前值的单元格编号传递给该方法。

由于 Cell.Value 可能是 null,因此您必须在尝试读取它和/或将其转换为所需类型之前对其进行验证。

List<string> MyList = LoadStringList(this.dataGridView1, 2);


public List<string> LoadStringList(DataGridView dgv, int cell)
{
if ((dgv == null) || (dgv.RowCount == 0)) return null;

List<string> result = dgv.Rows.Cast< DataGridViewRow>()
.Select(r => { return r.Cells[cell].Value != null
? r.Cells[cell].Value.ToString()
: default; })
.ToList();

return result;
}

如果需要更通用的输入类型:

try
{
List<int> MyList = LoadList<int>(this.dataGridView1, 2).ToList();
}
catch (Exception ex)
{
//Handle the exception/Update the UI/Prompt the User
Console.WriteLine(ex.Message);
}


public IEnumerable<T> LoadList<T>(DataGridView dgv, int cell)
{
if ((dgv == null) || (dgv.RowCount == 0)) return null;

IEnumerable<T> result = null;

try
{
result = dgv.Rows.Cast<DataGridViewRow>()
.Select(r => { return r.Cells[cell].Value != null
? (T)Convert.ChangeType(r.Cells[cell].Value, typeof(T))
: default;
})
.ToList();
}
catch (Exception ex) {
//Manage the exception as required
throw ex;
}
return result;
}

关于c# - 如何从数据 GridView 加载列表<t>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com