【问题标题】:how can i change specific datagridview cell value?如何更改特定的 datagridview 单元格值?
【发布时间】:2021-10-12 10:05:00
【问题描述】:

我有来自数据库的数据,但数据库记录的一个属性是位(布尔值)。 例如

name, surname, date, itHave
A      B     2020    1//
C      D     2021    0

表单应用端,数据ok。我可以看到记录。但我想将 1 和 0 更改为是或否。

我试过了 number(datagridview的个数)

for( i=0; i< number; i++){

   if (dataGridView1.Rows[i].Cells[3].Value.ToString() =="1"){
       MessageBox.Show("Test");
       dataGridView1.Rows[i].Cells[3].Value = "Yes";
   }

}

MessageBox.Show("测试"); // 这正在运行 但它不会发生。

我该如何解决?

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    您的示例看起来不错并且有效。我在“It Have”列创建了初始 DataGridView 和一些 0-1 值:

    然后使用您的示例(通过添加三元组进行了一点编辑):

    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
    {
        DataGridViewCell cell = dataGridView1.Rows[i].Cells[3];
        cell.Value = cell.Value.ToString() == "1" ? "Yes" : "No";
    }
    

    同时获得Yes/No 而不是1-0

    请注意,您的 MessageBox.Show("Test"); 会阻止代码执行,直到您关闭它。

    【讨论】:

    • 谢谢你,但它正在为其他单元格运行 A B 日期正常,但它在数据库 SQL 上有点问题。现在 System.Exception:是 int32 和 System.FormatException 错误
    • 如果您的意思是与数据库通信时类型不匹配,那么可能在您的数据库列中“It Have”具有整数类型,但您设置的值“是/否”是字符串类型(或 varchar) .
    【解决方案2】:

    以人类可读的文本制作您的数据库数据,您可以在 LINQ 中使用匿名类型:

    var items = mydbitems.Select(x => new 
                                      {
                                         Name = x.name,
                                         Surname = x.surname,
                                         Date = x.date,
                                         itHave = x.itHave == 1 ? "yes" : "no"
                                      };
    datagridview.DataSource = items.ToList();
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多