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