我有一个数据网格,它在用户编辑我的应用程序时的行数方面是可变的。我需要创建一个列表框,列出包含变量datagrid的一列的字符串,无论长度如何。
我在执行此操作时遇到了麻烦,需要一种简单的方法将列内容转换为字符串数组。然后使用该数组动态填充列表框。
最近有人成功完成了这项工作吗?
Visual Studio 2010 C#
答案 0 :(得分:0)
您是否有理由使用数组而不是列表?
你唯一的选择就像下面的
string x[];
for(int I=0; I < rows.count; I++) {
x.push(rows[I].column["ColumnA"].toString());
}
基本上你声明一个空数组,然后每次需要使用Push方法时将其增加1.
答案 1 :(得分:0)
使用字符串列表代替使用数组:
public IEnumerable<Microsoft.Windows.Controls.DataGridRow> GetDataGridRows(Microsoft.Windows.Controls.DataGrid grid)
{
var itemsSource = grid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as Microsoft.Windows.Controls.DataGridRow;
if (null != row) yield return row;
}
}
var rows= GetDataGridRows(grid);
foreach (DataGridRow r in rows)
{
DataRowView rv = (DataRowView)r.Item;
foreach (DataGridColumn column in grid.Columns)
{
}
}
答案 2 :(得分:0)
试试这个,希望它能正常工作:
DataTable dt=new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ph_NO");
dt.Rows.Add(new object[] { "sonu", 213123 });
dt.Rows.Add(new object[] { "abhay", 123411});
dt.Rows.Add(new object[] { "John", 234123 });
dataGridView1.DataSource = dt;
listBox1.DataBindings.Add(new Binding("DataSource", dataGridView1,"DataSource"));
listBox1.DisplayMember = "Name";