C# 在gridview中显示百分比值

C# 在gridview中显示百分比值,c#,asp.net,sql-server-2008,gridview,C#,Asp.net,Sql Server 2008,Gridview,我试图在Gridview中以百分比格式显示值。现在我可以得到百分比值和它的符号,但我需要的是范围。我通过一个下拉列表来存储%的值,下拉列表的值从0%到100%,例如,如果我从下拉列表中选择20%,它应该以20%的形式存储在我的DB中,同样的值应该显示在我的GridView中,但我得到的是2%的DB和200%的Grid View 我知道某个地方有一个小错误,但我无法找出它。我已将Percnetage的DB数据类型存储为十进制(8,0)。需要帮助,伙计们 这是我试过的 下拉列表aspx代码 <

我试图在Gridview中以百分比格式显示值。现在我可以得到百分比值和它的符号,但我需要的是范围。我通过一个下拉列表来存储%的值,下拉列表的值从0%到100%,例如,如果我从下拉列表中选择20%,它应该以20%的形式存储在我的DB中,同样的值应该显示在我的GridView中,但我得到的是2%的DB和200%的Grid View

我知道某个地方有一个小错误,但我无法找出它。我已将Percnetage的DB数据类型存储为十进制(8,0)。需要帮助,伙计们

这是我试过的

下拉列表aspx代码

<asp:DropDownList ID="DrpPercentageComplete" runat="server" BackColor="LightBlue"
 BorderColor="Black" BorderWidth="1px" Font-Bold="True" Font-Names="Verdana" 
 Font-Size="X-Small" DataTextFormatString="{0:0.# %}" ForColor="Black" Height="16px" 
                                                                onselectedindexchanged="DrpPercentageComplete_SelectedIndexChanged" 
 style="text-align: center" Width="135px">
  <asp:ListItem Value="Please Select"></asp:ListItem>
  <asp:ListItem Value="None"></asp:ListItem>
  <asp:ListItem Value="0%">0%</asp:ListItem>
  <asp:ListItem Value="10%">10%</asp:ListItem>
  <asp:ListItem Value="20%">20%</asp:ListItem>
  <asp:ListItem Value="30%">30%</asp:ListItem>
  <asp:ListItem Value="40%">40%</asp:ListItem>
  <asp:ListItem Value="50%">50%</asp:ListItem>
  <asp:ListItem Value="60%">60%</asp:ListItem>
  <asp:ListItem Value="70%">70%</asp:ListItem>
  <asp:ListItem Value="80%">80%</asp:ListItem>
  <asp:ListItem Value="90%">90%</asp:ListItem>
  <asp:ListItem Value="100%">100%</asp:ListItem>
  </asp:DropDownList>
要插入的存储过程

ALTER PROCEDURE [dbo].[InsertTask]


   @Task_Name nvarchar(50),
   @Client_Name nvarchar(50),
   @Begin_Date date,
   @Due_Date date,
   @Description_A nvarchar(50),
   @Assign_By nvarchar(50),
   @Assign_To nvarchar(50),
   @Status_S nvarchar(50),
   @Percentage_Complete decimal(18,0),

   @TaskID bigint OUTPUT

   As

   Insert into dbo.Task
   (
    TaskName, 
    ClientName, 
    BeginDate,
    DueDate,
    Description,
    AssignBy,
    AssignTo,
    Status,
    PercentageComplete
   )

    Values
   (
    @Task_Name, 
    @Client_Name, 
    @Begin_Date,
    @Due_Date,
    @Description_A,
    @Assign_By,
    @Assign_To,
    @Status_S,
    @Percentage_Complete
   )

   Select @TaskID = SCOPE_IDENTITY()

这是以DB存储百分比值的最佳方法

它是十进制(p,s)


您应该将不带任何simbol的值保存为十进制。当您需要在UI中使用格式时,请使用cal ToString并使用rigth格式表示百分比:

1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %

您只需将数据库中的值保存为Decimal/varchar,不带任何符号,即(%)。
在gridview上,使用
string.Concat
在DB值后添加
%
符号

代码如下所示:

<asp:Label ID="PercentageComplete" runat="server" Font-Names="Verdana" 
 Text='<%# string.Concat(Eval("PercentageComplete"),"%") %>'>
代码隐藏:

objc.PercentageComplete = Convert.ToDecimal(DrpPercentageComplete.SelectedValue);

谢谢你的回复。。。但我把它存储为d,和十进制(p,s)一样。。但无法获得所需的值…请尝试阅读此内容。我按照相同的问题尝试格式化我的代码,先生:)paaji。。上述代码的thnks。。我试过了。。。问题是,如果我从下拉列表中选择了0%到100%之间的任何值,则将其作为一位数。。我的意思是,如果我选择20%,它将在我的数据库中作为2,并且同样显示在Gridview中。。。2%@Suraj:请发布您的服务器端代码,说明如何将ddl值插入DBobjc.PercentageComplete=Convert.ToInt32(DrpPercentageComplete.Text);但它的给出错误:输入字符串的格式不正确,如果我给ToString或ToDecimal,它的语句就不能转换成任何一种格式
<asp:Label ID="PercentageComplete" runat="server" Font-Names="Verdana" 
 Text='<%# string.Concat(Eval("PercentageComplete"),"%") %>'>
<asp:ListItem Value="0">0%</asp:ListItem>
<asp:ListItem Value="10">10%</asp:ListItem>
<asp:ListItem Value="20">20%</asp:ListItem>
    .............
    ............
<asp:ListItem Value="100">100</asp:ListItem>
objc.PercentageComplete = Convert.ToDecimal(DrpPercentageComplete.SelectedValue);