0

我想将我的所有数据从数据库复制到我将绑定到 gridview 的通用列表。但我做不到。我正在做的是:

Collapse | Copy Code
public List<string>   fillgridviewDAL()
{
    List<string> NameList = (from r in dataset.Tables["MyTableName"].AsEnumerable()
                             select r.Field<string>("name") + r.Field<string>("age") + r.Field<string>("salary") + r.Field<string>("city")).ToList();
    return NameList;
}

当我看到数据集中的内容时,它会显示完整的表格,但是当我使用上述方法使用通用列表时,它会连接列并在特定索引处给出结果行。简而言之,它以字符串形式给我输出。比我如何将 gridview 绑定到我的通用列表。

4

3 回答 3

1

您应该创建将保存您的行数据的类:

public class Item
{
    public string Name { get; set; }
    public string Age { get; set; }
    public string Salary { get; set; }
    public string City { get; set; }
}

然后返回List<Item>

public List<Item> fillgridviewDAL()
{
    List<Item> NameList = (from r in dataset.Tables["MyTableName"].AsEnumerable()
                           select new Item {
                               Name = r.Field<string>("name"),
                               Age = r.Field<string>("age"),
                               Salary = r.Field<string>("salary"),
                               City = r.Field<string>("city")
                           }).ToList();
    return NameList;
}
于 2013-09-12T10:58:12.457 回答
0

不确定我是否理解您想要实现的目标。也许字典列表可以解决问题。不过没试过。希望这会有所帮助

public List<Dictionary<String, object>>   fillgridviewDAL()
{
List<Dictionary<String, object>> rows =
    dataset.Tables["MyTableName"]
                .AsEnumerable()
                .Select(
                    row =>
                       row.Table.Columns
                          .Cast<DataColumn>()
                          .ToDictionary(column => column.ColumnName,
                                        column => row[column]))
                .ToList();

    return rows ;
}

或者,如果您只对这些值感兴趣,您可以选择List<List<Object>>,如下所示:

public List<List<object>> fillgridviewDAL()
{
    DataSet dataset = null;
    List<List<object>> rows =
        dataset.Tables["MyTableName"]
                    .AsEnumerable()
                    .Select(
                        row =>
                        row.Table.Columns
                                .Cast<DataColumn>()
                                .Select(column => row[column]).ToList())
                    .ToList();

    return rows;
}
于 2013-09-12T12:33:07.227 回答
0

下面将设置DataSource带有选定列的网格

gridview.DataSource = dataset.Tables["MyTableName"]
                       .DefaultView.ToTable(false, "name", "age", "salary", "city");

如果您正在动态选择列,假设列名被string[]调用columns

gridview.DataSource =dataset.Tables["MyTableName"].DefaultView.ToTable(false, columns);
于 2013-09-12T11:04:16.207 回答