分别从datasettableadapter填充datagridview列

时间:2012-08-13 22:20:26

标签: datagridview

我已经设置了一个数据网格视图并将其链接到我的数据并用适配器填充它,所有这些工作正常。我想要做的是在数据网格视图的开头添加一个列,并将图像添加到第一列,该列的当前第一列的文件名将作为第二列。

我已经添加了列并为图像设置了它,如果未设置该值,还会设置默认图像。我无法弄清楚如何读取column2中的内容,然后将文件名(编辑一点以匹配我的命名方案)加载到column1中。我无法弄清楚我是否需​​要对网格视图,datasettableadapter或其他地方执行此操作。我尝试迭代抛出行来读取cell2然后为cell1加载图像但我无法设置currentrow。

我最终使用了CellPainting,因为CellFormating给了我一些奇怪的输出。以下是我使用的代码。 Cells [0]是我想要放入图像的单元格.Choles [1]是我用作文件名的图像的名称。

    private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        string monsterName = "";

        try
        {
            if (this.dataGridView1.Columns[e.ColumnIndex].Name == "monsterNameDataGridViewTextBoxColumn")
            {
                if (e.Value != null && e.RowIndex > -1)
                {
                    monsterName = (string)this.dataGridView1.Rows[e.RowIndex].Cells[1].Value;
                    this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = new Bitmap(@"C:\Users\Chad\Pictures\Dark Summoner\C_" + monsterName + @".png");
                }
            }
        }

        catch (ArgumentException)
        {
           toolStripStatusLabel1.Text = monsterName + " image file does not exist.";
        }

    }

1 个答案:

答案 0 :(得分:0)

你可以通过几种方式解决这个问题。

1)处理datagridview的CellFormatting事件并在那里填充单元格的图像。该事件具有一个参数,可以访问它尝试格式化的当前行/列。因此,您可以从单元格2中读取图像文件,并在此基础上设置单元格1的图像。

2)预先填充数据源中的图像数据。因此,如果您的dataadapter正在填充DataTable,您可以在加载数据表后加载/填充数据表中的图像。