0

我在数据表中有一个列,当从数据库中获取时,其值为 True 或 False。它在网格视图中显示时显示复选框。但是如果值为真,我想显示“是”,如果值为假,我想显示“否”。我怎样才能做到这一点??

        DataTable dt = DBAction.ExecuteQuery(command,zzz.id);


        if (dt != null && dt.Rows.Count > 0)
        {
            // i want to change here
            gridTagHistory.DataSource =dt;
            this.ShowDialog();
        }
4

4 回答 4

2

您可以修改您的选择查询(最推荐)

或者

您可以遍历 DataTable/Gridview

  foreach (DataRow rw in dt.Rows)
  {
     string a = rw["YourBoolColName"].ToString();
      if(a=="True")
       {
        rw["YourBoolColName"]="Yes";
     }
    else {rw["YourBoolColName"]="No";}

  }


foreach (GridViewRow row in GridView1.Rows)
{
    Label myLabel = (Label)row.FindControl("myLabelName");
    if(myLabel.text=="True")
       {
         myLabel.text="YEs";
        }
     else if(myLabel.text=="False")
       {
        myLabel.text="No";
       }

}
于 2013-05-21T12:20:53.097 回答
0

您可以从设计视图将该列更改为模板列,然后在标记中您可以看到它的呈现方式,在这种情况下,它将呈现为复选框。从这里您可以将显示更改为您想要的任何内容,因此您可以将复选框替换为标签并保持相同的绑定。

这是一篇介绍如何使用模板列的文章。

即使您不将它用于这种情况,这也值得一读。模板列在外观和与网格视图的交互方面允许更多的自由和自定义。

于 2013-05-21T12:38:04.173 回答
0

修改您的选择查询以返回字符串而不是布尔值...或在将数据集设为数据源之前修改数据集(不推荐)

于 2013-05-21T12:25:14.493 回答
0

你可以简单地在你的 sql 查询中写下 case,然后从那里写 yes 或 no。并将其绑定到网格视图中的 asp:Boundfield 。简单的解决方案,并且会比逐行遍历网格视图更快。

于 2013-05-21T13:15:35.923 回答