Я пытаюсь показать значения в процентном формате в Gridview. Прямо сейчас я могу получить процентные значения вместе со своим символом, но мне нужен Range. Я сохраняю значения% через список DropDown, который имеет от 0% до 100%, например, если я выбираю 20% из DropDown, он должен хранить в моей БД как 20%, и то же самое должно отображаться в моем GridView, но я получаю его 2 в БД и 200% в моем представлении сетки.Отображение процентных значений в gridview
Я знаю, что где-то есть небольшая ошибка, но я не могу понять это. Я сохранил тип данных DB для Percnetage как Decimal (8,0). Нужна помощь парням.
Вот что я попробовал
код DropDownList 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>
GridView TemplateField ASPX код Процент
<asp:TemplateField HeaderText="% Complete">
<ItemTemplate>
<asp:Label ID="PercentageComplete" runat="server" Font-Names="Verdana"
Font-Size="X-Small" Height="30px" Text='<%# Eval("PercentageComplete","{0:0.#%}")%>' Width="100px">
</asp:Label>
</ItemTemplate>
<FooterStyle BackColor="LightSlateGray" />
<HeaderStyle BackColor="LightSlateGray" ForeColor="White" Width="109px" />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
aspx.cs код добавления значения DDL
protected void BtnAdd_Click(object sender, EventArgs e)
{
MTMSDTO objc = new MTMSDTO();
int Flag = 0;
objc.TaskName = TxtTaskName.Text;
objc.ClientName = DrpClientName.SelectedItem.Text;
string date;
date = Convert.ToDateTime(TxtBeginDate.Text).ToString("dd/MM/yyyy");
DateTime dt = new DateTime();
dt = Convert.ToDateTime(date);
objc.BeginDate = dt;
objc.DueDate = Convert.ToDateTime(TxtDueDate.Text);
objc.Description = TxtDescription.Text;
objc.AssignBy = LblAssignBy.Text;
objc.AssignTo = DrpAssignTo.SelectedItem.Text;
objc.Status = DrpStatus.SelectedItem.Text;
objc.PercentageComplete = Convert.ToInt32(DrpPercentageComplete.Text);
int X = obj.InsertTask(objc);
{
if (X >= 0)
{
Flag = 1;
}
else
{
Flag = 0;
}
}
if (Flag == 1)
{
LblSuccess.Visible = true;
LblSuccess.Text = "Data Added Successfully";
}
else
{
LblErr.Visible = true;
LblErr.Text = "Failed To Add Data!!!";
}
}
private Decimal _PercentageComplete;
public Decimal PercentageComplete
{
get { return _PercentageComplete; }
set { _PercentageComplete = value; }
}
public int InsertTask(MTMSDTO M)
{
DBAccess db = new DBAccess();
SqlParameter objParam = new SqlParameter("@TaskID", M.TaskID);
objParam.Direction = ParameterDirection.Output;
db.Parameters.Add(new SqlParameter("@Task_Name", M.TaskName));
db.Parameters.Add(new SqlParameter("@Client_Name", M.ClientName));
db.Parameters.Add(new SqlParameter("@Begin_Date", M.BeginDate));
db.Parameters.Add(new SqlParameter("@Due_Date", M.DueDate));
db.Parameters.Add(new SqlParameter("@Description_A", M.Description));
db.Parameters.Add(new SqlParameter("@Assign_By", M.AssignBy));
db.Parameters.Add(new SqlParameter("@Assign_To", M.AssignTo));
db.Parameters.Add(new SqlParameter("@Status_S", M.Status));
db.Parameters.Add(new SqlParameter("@Percentage_Complete", M.PercentageComplete));
db.Parameters.Add(objParam);
int retval = db.ExecuteNonQuery("InsertTask");
if (retval >= 1)
{
return int.Parse(objParam.Value.ToString());
}
else
{
return -1;
}
}
хранимая процедура для вставки
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()
paaji. . thnks для вышеуказанного кода .. я попробовал это ... проблема в том, что если я выберу любое значение от 0% до 100% от раскрывающегося списка, которое оно принимает как одну цифру. Я имею в виду, если я выберу 20%, это займет 2 в моей БД и то же самое отображается в Gridview ... 2% – Suraj
@Suraj: Pls отправляет ваш код сервера, как вы вставляете значение ddl в DB –
objc.PercentageComplete = Convert.ToInt32 (DrpPercentageComplete.Text); но его давая ошибку: входная строка не в правильном формате, и если я даю ToString или ToDecimal, ее высказывание не может преобразовать в любой из них – Suraj