【问题标题】:C# DatagridView - Disable autoconversion bool values to checkboxC# DatagridView - 禁用自动转换布尔值到复选框
【发布时间】:2015-07-16 13:30:30
【问题描述】:

我有一个带有一些布尔列的 DataTable,当我用作 Datagridview 数据源时,Datagridview 将这些布尔单元格显示为复选框。 有可能避免吗? 我需要字符串单元格

谢谢 编辑:如果更容易,我可以编辑数据表

【问题讨论】:

标签: c# datagridview boolean


【解决方案1】:

我看到了两种方法:

  1. DataGridView设置属性AutoGenerateColumns = false,然后在设计器中或通过代码创建列。
    对于bool 字段,使用DataGridViewTextBoxColumn 类型的列。
    DataGridViewTextBoxColumn 将自动将bool 转换为文本TrueFalse

预定义的列可能是一个很好的解决方案,因为您可以控制向用户显示数据的方式,并且值保持在原始类型中。

  1. 通过更改 sql 查询或操作 DataTable 将值转换为数据源中的字符串
DataTable newDataTable = yourDataTable.Clone();
newDataTable.Columns["BoolTypeColumnName"].DataType = typeof(bool);
foreach (DataRow row in yourDataTable.Rows) 
{
    newDataTable.ImportRow(row);
}
this.YourDataGridView.DataSource = newDataTable;

【讨论】:

    【解决方案2】:

    在 RowDataBound 事件中,您可以使用字符串替代更新值

    像这样的东西..

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                e.Row.Cells[0].Text = Convert.ToBoolean(((DataRowView)e.Row.DataItem)["DataColumn"]) == true ? "Yes" : "No";
            }
    

    希望这可能会有所帮助...

    【讨论】:

    • 不适用于 Datagridview,该列仍然是布尔值,不允许文本
    • RowDataBoundDataGrid 控件的事件,它是 ASP.NET 控件而不是 Winforms
    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 2015-04-23
    • 2016-09-21
    • 2014-06-12
    • 2017-03-07
    • 2012-07-20
    • 2021-12-15
    • 2013-07-26
    相关资源
    最近更新 更多