我希望在Windows窗体应用程序的true
中将列值显示为false
或DataGridView
而不是复选框作为列值。实际上,在数据库中,该表具有列IsPaymentCard
,其值为1
或0
,同时将表值绑定到DataGridView
。在DataGridView
中,IsPaymentCard
的列值显示为复选框,而不是1
或0
。我想将值显示为boolean
。
我试过如下
dataGridView1 .DataSource = wsobj.Get(connec,comand,"tablename");// binded through webservice
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(row.Cells["IsPaymentCard"].Value) == true)
{
row.Cells["IsPaymentCard"].Value = "True";
}
else row.Cells["IsPaymentCard"].Value = "False";
}
提前致谢。
答案 0 :(得分:0)
您可以使用RowDataBoundMethod执行此操作。在这种方法中,您可以执行以下操作:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox chk = (CheckBox)e.Row.Cells[1].Controls[0];
chk.Visible = false;
e.Row.Cells[1].Text = chk.Checked.ToString();
}
}
这可以解决您的问题。
答案 1 :(得分:0)
我相信你使用的是BoundField列,如果不使用autogeneratecolumn =" true"。
将列更改为TemplateField,如下所示。
<asp:TemplateField>
<ItemTemplate>
<%# String.Equals(Convert.ToString(Eval("IsPaymentCard")).ToLower(),"true")?"true":"false" %>
</ItemTemplate>
</asp:TemplateField>
如果您使用这样的方法,则不再需要foreg for dataGridView1.Rows。
答案 2 :(得分:0)
使用布尔值
绑定Checkbox DataTable dtEmp = new DataTable();
// add column to datatable
dtEmp.Columns.Add("IsPresent", typeof(bool));
dtEmp.Columns.Add("EmpID", typeof(int));
dtEmp.Columns.Add("EmpName", typeof(string));
dtEmp.Rows.Add(true, 111, "ABC");
dtEmp.Rows.Add(false, 444, "DEF");
DataTable newDataTable = dtEmp.Clone();
foreach (DataColumn dc in newDataTable.Columns)
{
if (dc.DataType == typeof(bool))
{
dc.DataType = typeof(string);
}
}
foreach (DataRow dr in dtEmp.Rows)
{
newDataTable.ImportRow(dr);
}
dataGridView1.DataSource = newDataTable;