1

我正在尝试将网格内的数字更改为文本。根据单元格中的值,我应该得到另一个文本。如果value = 0它应该显示"inkomst",如果value = 1它应该显示"Uitgave"

我已经有了这段代码来显示正确的行并格式化宽度。

private void updateAll()
{
    dataGridViewInkomsten.DataSource = blFinancien.getFinancienByInkomsten();

    //kolommen niet tonen waarin enkel id's worden getoond
    dataGridViewInkomsten.Columns[0].Visible = false;
    dataGridViewInkomsten.Columns[1].Visible = false;
    dataGridViewInkomsten.Columns[2].Visible = false;
    dataGridViewInkomsten.Columns[8].Visible = false;

    dataGridViewInkomsten.Columns[6].HeaderText = "Inkomst/uitgave";

    int breedtevankolommen = dataGridViewInkomsten.Width / 5;
    dataGridViewInkomsten.Columns[3].Width = breedtevankolommen;
    dataGridViewInkomsten.Columns[4].Width = breedtevankolommen;
    dataGridViewInkomsten.Columns[5].Width = breedtevankolommen;
    dataGridViewInkomsten.Columns[6].Width = breedtevankolommen;
    dataGridViewInkomsten.Columns[7].Width = breedtevankolommen;
}

现在取决于第六列中的 int 值,我应该得到"Inkomst"or "Uitgave"。我也有一个打印屏幕,所以你明白我的意思。

数据网格

有人可以告诉我如何完成吗?

4

5 回答 5

1

首先创建单元格样式:

 System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
 dataGridViewCellStyle1.Format = "One;\'\';Zero";
 dataGridViewCellStyle1.NullValue = null;

然后将单元格样式应用于您的动态列:

 dataGridViewInkomsten.Columns[6].DefaultCellStyle = dataGridViewCellStyle1;

那应该这样做。

于 2013-04-11T15:20:15.537 回答
0

将数据保存到数据库后,使用 datagridview.rows[].cells[].value

于 2013-04-11T12:36:00.707 回答
0

有几种方法可以做到这一点。

  1. 您可以在 SQL 查询中编写 switch case 并设置所需的文本。

  2. 或者,您可以在网格中添加另一列。说第 2 列。隐藏实际列说 COLUMN1。
    然后在您的网格单元格格式化事件(或任何类似事件)中,您可以根据实际列(COLUMN1)中的值设置此列(COLUMN2)的文本。

    private sub grid_CellFormatting(sender ,e) { if(grid.Rows(e.RowIndex).Cells("COLUMN1").Text == "0") grid.Rows(e.RowIndex).Cells("COLUMN2"). text = "value1" else(grid.Rows(e.RowIndex).Cells("COLUMN1").Text == "1") grid.Rows(e.RowIndex).Cells("COLUMN2").text = "value2 " }

  3. 实际上,您应该在域模型中对 UI 进行这种格式化,然后将域模型绑定到网格。那是在您从数据库中获取数据之后。

于 2013-04-11T12:58:11.303 回答
0

尝试这个:

SqlCeCommand cmd = new SqlCeCommand();
SqlCeConnection conn = new SqlCeConnection("connString");
cmd.Connection = conn;
cmd.CommandText = "SELECT COUNT(*) FROM yourTable";
var count = cmd.ExecuteScalar();

for (int i = 0; i <= int.Parse(count.ToString()); i++)
{
     if (dataGridViewCategories.Rows[i].Cells["cellName"].Value.ToString() == "0")
     {
        dataGridViewCategories.Rows[i].Cells["coulmnName"].Value = "Inkomst";
     }
     else
     {
        dataGridViewCategories.Rows[i].Cells["coulmnName"].Value = "Uitgave";
     }
}
于 2013-04-11T14:54:10.057 回答
0

编辑您绑定网格的查询。

在其中包含 case 如下:

CASE WHEN lnkomst/uitgave = 0 THEN 'lnkomst' ELSE 'uitgave' END

select col1,col2,(CASE WHEN lnkomst/uitgave = 0 THEN 'lnkomst' ELSE 'uitgave' END) as lnkomst/uitgave  from tablename

像这样写查询。

编辑访问:

select col1,col2,lnkomst/uitgave = Switch(
    NUMREG=0,'lnkomst',
    NUMREG=1,'uitgave');  from tablename

希望能帮助到你。

于 2013-04-11T12:13:12.113 回答