如何在winform datagrid单元格中将布尔值转换并显示为字符串值

时间:2017-11-20 07:42:50

标签: c# asp.net winforms datagridview

我希望在Windows窗体应用程序的true中将列值显示为falseDataGridView而不是复选框作为列值。实际上,在数据库中,该表具有列IsPaymentCard,其值为10,同时将表值绑定到DataGridView。在DataGridView中,IsPaymentCard的列值显示为复选框,而不是10。我想将值显示为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";
}

提前致谢。

3 个答案:

答案 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;