Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在GridView中显示小数点后2位的数字_Asp.net_Gridview_Asp.net 3.5 - Fatal编程技术网

Asp.net 在GridView中显示小数点后2位的数字

Asp.net 在GridView中显示小数点后2位的数字,asp.net,gridview,asp.net-3.5,Asp.net,Gridview,Asp.net 3.5,我在一个.aspx页面中有一个GridView,正在这个网格中显示动态数据,设置为AutoGenerateColumns=“True” 根据用户在组合框中选择的选项,我将不同的数据表绑定到GridView。例如,如果用户选择Persons,则我获取Persons数据表;如果用户选择Products,则我获取Products数据表 如何在GridView中显示小数点后2位的浮点数或双精度数?绑定列应具有DataFormatString列。你可以这样做: DataFormatString=“{0:0

我在一个.aspx页面中有一个GridView,正在这个网格中显示动态数据,设置为
AutoGenerateColumns=“True”

根据用户在组合框中选择的选项,我将不同的数据表绑定到GridView。例如,如果用户选择Persons,则我获取Persons数据表;如果用户选择Products,则我获取Products数据表


如何在GridView中显示小数点后2位的浮点数或双精度数?

绑定列应具有DataFormatString列。你可以这样做:

DataFormatString=“{0:0.00}”

更新 如果是
AutoGenerateColumns=“true”
。。。我必须知道更多关于绑定内容的细节,但这里有一些途径可以探索:

  • 我不确定GridView是否会 尊重中的DataFormatAttribute 数据注释。如果你有约束力 对象和GridView 这个属性,可能就是其中之一 要走的路
  • 连接RowDataBound事件并 检查每一列的电位 十进制值,并以这种方式格式化

  • 在GridView中格式化内容有两种简单的方法。第一个在前面的回答中给出-使用DataFormatString。第二种方法听起来似乎适用于您动态加载网格的情况,即更改进入网格的数据


    因此,与其返回一个数字并尝试格式化它,不如返回一个格式化的数字并让GridView显示它。

    您可以在GridView中写入BoundField:

    <asp:BoundField DataField="amount" DataFormatString="{0:n}" />
    
    
    
    您还可以在GridView中编写TemplateField

    <asp:TemplateField>
      <ItemTemplate>
        <%#Eval("amount","{0:n}")%>
      </ItemTemplate>
    </asp:TemplateField>
    

    这适用于模板列,比如说,如果您想要一个小数点到两位的比率(如1:3)


    如果您使用的是
    DataFormatString
    ,但它似乎没有起作用,请添加
    HtmlEncode=“false”
    ,例如:

    <asp:BoundField DataField="DateScheduled" HeaderText="Date Created"   DataFormatString="{0:D}" HtmlEncode="false"/> // date format
    <asp:BoundField DataField="Amount" HeaderText="Pay This Amount" DataFormatString="{0:F}" HtmlEncode="false"/> // number format
    
    //日期格式
    //数字格式
    
    您可以在边界字段中执行
    DataFormatString=“{0:n2}”

    
    
    <asp:TemplateField HeaderText="Prev Salary" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:Label ID="lblGrdSalary" runat="server" Text='<%#Bind("Salary", "{0:n}") %>'></asp:Label>
        </ItemTemplate>
        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
        <ItemStyle HorizontalAlign="Center" Width="70px" />
    </asp:TemplateField>
    

    ok,我正在将DataTable绑定到gridview。实际上,我正在根据用户选择的条件将不同的DataTable绑定到同一个gridview,意思是假设我在组合框1.Persons和2.Products中有两个选项,所以如果用户选择了Persons,那么我将获取Persons数据表并将其绑定到GridView,如果用户选择了Products,那么我将获取Products数据表并将其绑定到GridView。看起来这可能会带来更多麻烦。您可以有两个GridView,一个是按您希望的方式为人员配置的,另一个是按产品配置的,然后根据需要隐藏一个并显示另一个吗?如果没有,您可能仍然可以检查RowDataBound上的每一列,并根据您的喜好设置值的格式。感谢HackedByChinese,实际上我在combo中有8个选项。:)但是感谢您的即时回复。我正在尝试这样的操作-'>它将所有值显示为2。我错在哪里?
    <asp:TemplateField HeaderText="Prev Salary" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:Label ID="lblGrdSalary" runat="server" Text='<%#Bind("Salary", "{0:n}") %>'></asp:Label>
        </ItemTemplate>
        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
        <ItemStyle HorizontalAlign="Center" Width="70px" />
    </asp:TemplateField>