【发布时间】:2015-07-16 13:30:30
【问题描述】:
我有一个带有一些布尔列的 DataTable,当我用作 Datagridview 数据源时,Datagridview 将这些布尔单元格显示为复选框。 有可能避免吗? 我需要字符串单元格
谢谢 编辑:如果更容易,我可以编辑数据表
【问题讨论】:
标签: c# datagridview boolean
我有一个带有一些布尔列的 DataTable,当我用作 Datagridview 数据源时,Datagridview 将这些布尔单元格显示为复选框。 有可能避免吗? 我需要字符串单元格
谢谢 编辑:如果更容易,我可以编辑数据表
【问题讨论】:
标签: c# datagridview boolean
我看到了两种方法:
DataGridView设置属性AutoGenerateColumns = false,然后在设计器中或通过代码创建列。bool 字段,使用DataGridViewTextBoxColumn 类型的列。DataGridViewTextBoxColumn 将自动将bool 转换为文本True 或False
预定义的列可能是一个很好的解决方案,因为您可以控制向用户显示数据的方式,并且值保持在原始类型中。
DataTable 将值转换为数据源中的字符串
DataTable newDataTable = yourDataTable.Clone();
newDataTable.Columns["BoolTypeColumnName"].DataType = typeof(bool);
foreach (DataRow row in yourDataTable.Rows)
{
newDataTable.ImportRow(row);
}
this.YourDataGridView.DataSource = newDataTable;
【讨论】:
在 RowDataBound 事件中,您可以使用字符串替代更新值
像这样的东西..
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Text = Convert.ToBoolean(((DataRowView)e.Row.DataItem)["DataColumn"]) == true ? "Yes" : "No";
}
希望这可能会有所帮助...
【讨论】:
RowDataBound 是 DataGrid 控件的事件,它是 ASP.NET 控件而不是 Winforms