如何在aspView中添加文本:BoundField?

时间:2017-12-12 15:50:28

标签: asp.net gridview oledb

我有以下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%而不是{ {1}}。但是%符号不应该插入数据库中。换句话说,3符号应仅用于GridView中的显示目的。

1 个答案:

答案 0 :(得分:0)

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

如果利率的格式为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;
    }
}