如何在 GridView 中向 asp:BoundField 添加文本?

How to add text to asp:BoundField in GridView?

我有以下 GridView,其中的数据是从 OleDB 数据库提供的。

<asp:GridView ID="GridViewSavingsTracker" AutoGenerateColumns="false" runat="server">
    <Columns>
        ...
        <asp:BoundField DataField="interestRate" HeaderText="Interest Rate" />
        ...
    </Columns>
</asp:GridView>

我正在从数据库中读取内容并按以下方式在 GridView 中打印:

protected void ShowGridView()
{
    string connectionString = GetConnString();
    OleDbConnection con = new OleDbConnection(connectionString);
    con.Open();
    string sqlQuery = "select * from ... ";
    OleDbCommand showGridViewCommand = new OleDbCommand(showGridViewQuery, con);
    showGridViewCommand.ExecuteNonQuery();

    DataTable dt = new DataTable();
    OleDbDataAdapter olda = new OleDbDataAdapter(showGridViewCommand);
    olda.Fill(dt);

    GridViewSavingsTracker.DataSource = dt;
    GridViewSavingsTracker.DataBind();

    con.Close();

}

我想做什么: 我想将 % 符号附加到 GridView 中 interestRate 列的内容,以便它们应显示为 3% 而不是 3。但是不应将 % 符号插入到数据库中。换句话说,% 符号应该只用于 GridView 中的显示目的。

根据您在数据库中存储利率的方式,将取决于以下哪一种解决方案可以解决您的问题,

如果利率格式为 0 = 0% 和 1 = 100%,您可以使用:

<asp:BoundField DataField="interestRate" HeaderText="Interest Rate" DataFormatString="{0:p}"/>

Documentation

否则你需要做一个模板

<columns>
    <asp:TemplateField HeaderText="Interest Rate:">
        <ItemTemplate>
            <asp:Literal ID="IntRate" runat="server" Text='<%# Eval("InterestRate") + "%" %>'></asp:Literal>
        </ItemTemplate>
    </asp:TemplateField>
</columns>

根据以下评论更新答案

protected void GridViewSavingsTracker_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int index = Convert.ToInt32(e.CommandArgument);
    var row = GridViewSavingsTracker.Rows[index];
    var interestRate = ((Literal row.FindControl("IntRate")).Text;
    if (e.CommandName == "SomeCommand")
    {
        TextBoxInterestRate.Text = interestRate;
    }
}