-1

可能重复:
如何在显示日期时阻止时间在 GridView 中显示?

我在名为“总计”的列中有负数的网格视图,我喜欢将所有负数放在括号中。

例如

Total
76  
(-66)
646  
(-76)  
(-10)  
(-6) 
16  
676

我正在使用带有 C# 的 ASP.NET,我应该如何去做。

或者我可以在 SQL 查询中做吗?因为网格视图是通过 sql 数据源填充的。

4

3 回答 3

1

看看这个简单的例子。我正在使用 Gridview:

C#

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<int> x = new List<int>() { 76, -66, 646, -76, -10, -6, 16, 676 };
        this.GridView1.DataSource = x;
        this.GridView1.DataBind();
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (Convert.ToInt32(e.Row.Cells[0].Text) < 0)
            {
                e.Row.Cells[0].Text = "(" + e.Row.Cells[0].Text + ")";
            }
        }

    }
}

输出:

Item
76
(-66)
646
(-76)
(-10)
(-6)
16
676

祝你好运

编辑:我不会修改 SQL 的输出以使其仅用于此目的。

于 2012-12-05T21:46:54.630 回答
1

我会做一些类似于 Hanlet Escano 的事情,但不是解析,我会像这样处理数据对象:

默认.aspx

<asp:GridView ID="gvGrid" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvGrid_RowDataBound">
  <Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Literal ID="litData" runat="server" />
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

默认.aspx.cs

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //生成数据 var data = new List() { 76, -66, 646, -76, -10, -6, 16, 676 };

      gvGrid.DataSource = data;
      gvGrid.DataBind();
    }
  }

  protected void gvGrid_RowDataBound(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      //Strongly Type Controls
      var litData = (Literal)e.Row.FindControl("litData");

      //Strongly Type Data
      var data = (int)e.Row.DataItem;

      //Display Data
      if (data < 0)
      {
        litData.Text = "[" + data.ToString() + "]";
      }
      else
      {
        litData.Text = data.ToString();
      }
    }
  }

这样做有几个优点,数据已经以其本机形式 (int) 存储,它只是在对象变量中。

其次,如果将来您需要处理具有更复杂数据对象(Person/Business/Foo/Bar 对象)的多个列,则可以使用相同的技术。

于 2012-12-05T21:57:23.293 回答
0

使用gridview的onRowDataBound事件并根据需要更新单元格,添加括号和东西:)

一探究竟:

http://www.dotnetfunda.com/forums/thread9403-get-the-particular-value-in-gridview-using-rowdatabound-in-csharpnet.aspx

于 2012-12-05T21:43:08.707 回答