将十进制数字格式转换为印度货币格式 [英] Format Decimal number to Indian Currency Format

查看:28
本文介绍了将十进制数字格式转换为印度货币格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的项目中使用 C# asp.net 4.0,我需要以印度货币格式显示价格.

<块引用>

例如.我的号码是 12550000.00 然后我想把它显示为 1,25,50,000.00

但是我希望在将数据绑定到 gridview 时将其显示在 gridview 中,

所以它可以在标记页面中完成.我们为每个项目数据绑定放置 Eval.

但是,我也想解释一下我的 senario 显示逗号​​分隔值.

我在 gridview 上方有一组文本框,用户可以在其中输入值并单击添加.

这会添加到视图状态中,并且视图状态会绑定到 gridview.

在gridview中,我也有点击它的编辑按钮,viewstate中的值被传递回gridview的RowCommand事件上的文本框.并在更新时单击视图状态数据表更新并绑定回 gridview.

供您参考:

protected void gvPropertyConfig_RowCommand(object sender, GridViewCommandEventArgs e){尝试{if (e.CommandName == "EditItem"){int index = Convert.ToInt32(e.CommandArgument);hdnIndex.Value = index.ToString();DataTable dt = (DataTable)ViewState["propertyConfig"];DataRow dr = dt.Rows[index];if (Request.QueryString["CMD"] == "Edit"){hdnPropertyConfigID.Value = dr["config_id"].ToString();if (dr["is_active"].ToString().ToLower() == "true"){chkConfigVisible.Checked = true;}别的{chkConfigVisible.Checked = false;}thIsActHed.Visible = true;tdIsActchk.Visible = true;tdbtnConfig.ColSpan = 2;}txtScalableArea.Text = dr["scalable_area"].ToString();txtCarpetArea.Text = dr["carpet_area"].ToString();txtPricePerSqFt.Text = dr["price_per_sq_ft"].ToString();txtCCPricePerSqFt.Text = dr["cc_price_per_sq_ft"].ToString();txtTotalPrice.Text = dr["total_price"].ToString();ddlNoOfBedrooms.SelectedValue = dr["room_id"].ToString();btnUpdateConfig.Visible = true;btnConfigSubmit.Visible = false;}if (e.CommandName == "DeleteItem"){int index = Convert.ToInt32(e.CommandArgument);DataTable dt = (DataTable)ViewState["propertyConfig"];DataRow dr = dt.Rows[index];if (Request.QueryString["CMD"].ToString() == "Edit"){int PropertyConfigID = Convert.ToInt32(dr[0].ToString());prConfigObj.deletePropertyConfig(PropertyConfigID);填充数据();}别的{博士删除();gvPropertyConfig.DataSource = (DataTable)ViewState["propertyConfig"];gvPropertyConfig.DataBind();}clearConfigTextBoxes();btnConfigSubmit.Visible = true;btnUpdateConfig.Visible = false;}setChecklistAttr();}捕获(异常前){扔前;}}

下面是Gridview的标记,

 <内容模板><div class="tabBord"><表格><tr><td colspan="4" class="middle"><h4>属性配置信息</td></tr><tr><td colspan="4"><p>注意:仅以 lacs 为单位输入总价.例如.如果 1 千万比输入 1,00,00,000</p><p></p></td></tr><tr><td><div id="divconfigstr" runat="服务器">配置<span style="color: Red">*</span></div><%--class="displaynon"--%></td><td><div id="divnoofbedrooms" runat="服务器"><asp:DropDownList Enabled="false" ID="ddlNoOfBedrooms" runat="server"></asp:DropDownList><p></p>

</td><td>可缩放区域 <span style="color: Red">*</span></td><td><asp:TextBox ID="txtScalableArea" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p></p></td></tr><tr><td>地毯区域<span style="color: Red">*</span></td><td><asp:TextBox ID="txtCarpetArea" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p></p></td><td>价格/平方英尺<span style="color: Red">*</span></td><td><asp:TextBox ID="txtPricePerSqFt" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p></p></td></tr><tr><td>CC Price/Sq.Ft.<span style="color: Red">*</span></td><td><asp:TextBox ID="txtCCPricePerSqFt" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p></p></td><td>总价(以 lacs 为单位)*</span></td><td><asp:TextBox ID="txtTotalPrice" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p></p></td></tr><tr><td id="thIsActHed" runat="服务器">积极的<asp:HiddenField ID="hdnPropertyConfigID" runat="server"/><asp:HiddenField ID="hdnIndex" runat="server"/></td><td id="tdIsActchk" runat="服务器"><asp:CheckBox ID="chkConfigVisible" runat="server" CssClass="checklist"/><p></p></td><td id="tdbtnConfig" runat="server" colspan="2"><div class="btnHold"><asp:Button ID="btnConfigSubmit" runat="server" Text="Add" OnClientClick="return ValidatePropertyConfig();"CssClass="sendBtn" OnClick="btnConfigSubmit_Click"/>&nbsp;<asp:Button ID="btnUpdateConfig" runat="server" OnClick="btnUpdateConfig_Click" OnClientClick="return ValidatePropertyConfig();"CssClass="sendBtn" Text="Update" Visible="False"/><asp:Label ID="lblerrconfig" CssClass="errormsg" runat="server"></asp:Label>

</td></tr><tr><td colspan="4"><div class="phold"><div class="gridH"><asp:GridView ID="gvPropertyConfig" runat="server" AutoGenerateColumns="False" OnRowCommand="gvPropertyConfig_RowCommand"OnRowDataBound="gvPropertyConfig_RowDataBound"><列><asp:TemplateField HeaderText="No Of Bedrooms" ItemStyle-CssClass="txtLT"><项目模板><asp:Label ID="lblno_of_bedrooms" runat="server" Text='<%# Eval("room_no") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="可缩放区域" ItemStyle-CssClass="txtRT"><EditItemTemplate><asp:TextBox ID="txtscalable_area" runat="server" Text='<%# Eval("scalable_area") %>'></asp:TextBox></EditItemTemplate><项目模板><asp:Label ID="lblscalable_area" runat="server" Text='<%# Eval("scalable_area") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="地毯区域" ItemStyle-CssClass="txtRT"><EditItemTemplate><asp:TextBox ID="txtcarpet_area" runat="server" Text='<%# Eval("carpet_area") %>'></asp:TextBox></EditItemTemplate><项目模板><asp:Label ID="lblcarpet_area" runat="server" Text='<%# Eval("carpet_area") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="价格/平方英尺."ItemStyle-CssClass="txtRT"><EditItemTemplate><asp:TextBox ID="txtprice_per_sq_ft" runat="server" Text='<%# Eval("price_per_sq_ft") %>'></asp:TextBox></EditItemTemplate><项目模板><asp:Label ID="lblprice_per_sq_ft" runat="server" Text='<%# Eval("price_per_sq_ft") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="CC 价格/平方英尺."ItemStyle-CssClass="txtRT"><EditItemTemplate><asp:TextBox ID="txtcc_price_per_sq_ft" runat="server" Text='<%# Eval("cc_price_per_sq_ft") %>'></asp:TextBox></EditItemTemplate><项目模板><asp:Label ID="lblcc_price_per_sq_ft" runat="server" Text='<%# Eval("cc_price_per_sq_ft") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Total Price (in lacs)" ItemStyle-CssClass="txtRT"><EditItemTemplate><asp:TextBox ID="txttotal_price" runat="server" Text='<%# Eval("total_price") %>'></asp:TextBox></EditItemTemplate><项目模板><asp:Label ID="lbltotal_price" runat="server" Text='<%# Eval("total_price") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="" ItemStyle-CssClass="txtLT"><项目模板><asp:ImageButton runat="server" ID="btnEditItem" CssClass="edBtn" ImageUrl="~/Admin/Includes/Images/edit.png"ToolTip="Edit Item" CommandName="EditItem" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/><asp:ImageButton runat="server" ID="btnDeletetem" CssClass="edBtn" ImageUrl="~/Admin/Includes/Images/delete.png"CommandName="DeleteItem" ToolTip="删除项目" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/></ItemTemplate></asp:TemplateField></列></asp:GridView>

</td></tr>

</内容模板></asp:UpdatePanel>

解决方案

在 ToString 函数中使用C"参数,并确保设置 globalaztion 属性.

string parseValueIntoCurrency(double number) {//设置货币格式字符串 curCulture = Thread.CurrentThread.CurrentCulture.ToString();System.Globalization.NumberFormatInfo currencyFormat = newSystem.Globalization.CultureInfo(curCulture).NumberFormat;货币格式.CurrencyNegativePattern = 1;return number.ToString("c",currencyFormat);}

如果您想使用不同的文化(假设您在美国,并且您想要印度格式),那么只需使用适当的 CultureInfo 元素,而不是将其从当前线程中取出.

OP 编辑​​的额外信息

好吧,为了将其放入网格,您想要做的是创建一个 PROTECTED 函数,该函数接收要转换的数字,并返回转换后的字符串(这基本上就是上面的代码.

>

现在,在 ASPX 端,您需要在网格视图中使用该功能.
所以,而不是这样:

 <asp:TemplateField HeaderText="Total Price (in lacs)" ><EditItemTemplate><asp:TextBox ID="txttotal_price" runat="server"Text='<%# Eval("total_price") %>'/></EditItemTemplate><项目模板><asp:标签 ID="lbltotal_price" runat="服务器"Text='<%# Eval("total_price") %>'>/></ItemTemplate></asp:TemplateField>

您将使用此模板字段:

 <asp:TemplateField HeaderText="Total Price (in lacs)" ><EditItemTemplate><asp:TextBox ID="txttotal_price" runat="server"Text='<%# Eval("total_price") %>'/></EditItemTemplate><项目模板><%# parseValueIntoCurrency(Eval("total_price")) %>'></ItemTemplate></asp:TemplateField>

注意,两件事.首先是我仍在将 UNFORMATTED 值传递到 EDIT TEMPLATE,并且我没有在 ITEM TEMPLATE 中实例化额外的 LABEL.

我不做额外标签的原因是因为我们不需要它.这只是您不需要承担的更多处理器/内存开销.

至于将未格式化的值传递给文本字段,那是因为它最终会更容易验证,而无需解析逗号和其他字符串元素.

I am using C# asp.net 4.0 in my project where i need to display price in India curreny format.

eg. my number is 12550000.00 then i want to display it as 1,25,50,000.00

But i want this to be displayed in gridview when i bind the data to the gridview,

so it can be done in markup page. where we place Eval for each Item Data Bound.

However, i would also like to explain my senario for displaying comma sepearted values.

i have a set of textboxes above the gridview where user makes entries of values and click add.

this gets add in the viewstate and the viewstate is binded to gridview.

In gridview i also have Edit button on click of it the values in viewstate is passed back to textbox on RowCommand Event of gridview. and on update click the viewstate datatable is updated and Binded back to gridview.

FOR your reference:

protected void gvPropertyConfig_RowCommand(object sender, GridViewCommandEventArgs e)
{
    try
    {
        if (e.CommandName == "EditItem")
        {
            int index = Convert.ToInt32(e.CommandArgument);
            hdnIndex.Value = index.ToString();
            DataTable dt = (DataTable)ViewState["proeprtyConfig"];
            DataRow dr = dt.Rows[index];

            if (Request.QueryString["CMD"] == "Edit")
            {
                hdnPropertyConfigID.Value = dr["config_id"].ToString();
                if (dr["is_active"].ToString().ToLower() == "true")
                {
                    chkConfigVisible.Checked = true;
                }
                else
                {
                    chkConfigVisible.Checked = false;
                }
                thIsActHed.Visible = true;
                tdIsActchk.Visible = true;
                tdbtnConfig.ColSpan = 2;
            }

            txtScalableArea.Text = dr["scalable_area"].ToString();
            txtCarpetArea.Text = dr["carpet_area"].ToString();
            txtPricePerSqFt.Text = dr["price_per_sq_ft"].ToString();
            txtCCPricePerSqFt.Text = dr["cc_price_per_sq_ft"].ToString();
            txtTotalPrice.Text = dr["total_price"].ToString();
            ddlNoOfBedrooms.SelectedValue = dr["room_id"].ToString();

            btnUpdateConfig.Visible = true;
            btnConfigSubmit.Visible = false;

        }
        if (e.CommandName == "DeleteItem")
        {
            int index = Convert.ToInt32(e.CommandArgument);
            DataTable dt = (DataTable)ViewState["proeprtyConfig"];
            DataRow dr = dt.Rows[index];
            if (Request.QueryString["CMD"].ToString() == "Edit")
            {
                int PropertyConfigID = Convert.ToInt32(dr[0].ToString());
                prConfigObj.deletePropertyConfig(PropertyConfigID);
                fillData();

            }
            else
            {
                dr.Delete();
                gvPropertyConfig.DataSource = (DataTable)ViewState["proeprtyConfig"];
                gvPropertyConfig.DataBind();
            }
            clearConfigTextBoxes();
            btnConfigSubmit.Visible = true;
            btnUpdateConfig.Visible = false;


        }
        setChecklistAttr();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

Below is the markup for Gridview,

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div class="tabBord">
                <table>
                    <tr>
                        <td colspan="4" class="middle">
                            <h4>
                                Property Config Information</h4>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">
                            <p>
                                Note: Enter total prices in lacs only. Eg. If 1 Crore than enter 1,00,00,000
                            </p>
                            <p>
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <div id="divconfigstr" runat="server">
                                Configuration<span style="color: Red">*</span></div>
                            <%--class="displaynon"--%>
                        </td>
                        <td>
                            <div id="divnoofbedrooms" runat="server">
                                <asp:DropDownList Enabled="false" ID="ddlNoOfBedrooms" runat="server">
                                </asp:DropDownList>
                                <p>
                                </p>
                            </div>
                        </td>
                        <td>
                            Scalable Area <span style="color: Red">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtScalableArea" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p>
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Carpet Area <span style="color: Red">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtCarpetArea" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p>
                            </p>
                        </td>
                        <td>
                            Price/Sq.Ft.<span style="color: Red">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtPricePerSqFt" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p>
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            CC Price/Sq.Ft.<span style="color: Red">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtCCPricePerSqFt" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p>
                            </p>
                        </td>
                        <td>
                            Total Price (in lacs)<span style="color: Red">*</span>
                        </td>
                        <td>
                            <asp:TextBox ID="txtTotalPrice" runat="server" autocomplete="off" MaxLength="10"></asp:TextBox><p>
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td id="thIsActHed" runat="server">
                            Active
                            <asp:HiddenField ID="hdnPropertyConfigID" runat="server" />
                            <asp:HiddenField ID="hdnIndex" runat="server" />
                        </td>
                        <td id="tdIsActchk" runat="server">
                            <asp:CheckBox ID="chkConfigVisible" runat="server" CssClass="checklist" /><p>
                            </p>
                        </td>
                        <td id="tdbtnConfig" runat="server" colspan="2">
                            <div class="btnHold">
                                <asp:Button ID="btnConfigSubmit" runat="server" Text="Add" OnClientClick="return ValidatePropertyConfig();"
                                    CssClass="sendBtn" OnClick="btnConfigSubmit_Click" />
                                &nbsp;
                                <asp:Button ID="btnUpdateConfig" runat="server" OnClick="btnUpdateConfig_Click" OnClientClick="return ValidatePropertyConfig();"
                                    CssClass="sendBtn" Text="Update" Visible="False" />
                                <asp:Label ID="lblerrconfig" CssClass="errormsg" runat="server"></asp:Label>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">
                            <div class="pHold">
                                <div class="gridH">
                                    <asp:GridView ID="gvPropertyConfig" runat="server" AutoGenerateColumns="False" OnRowCommand="gvPropertyConfig_RowCommand"
                                        OnRowDataBound="gvPropertyConfig_RowDataBound">
                                        <Columns>
                                            <asp:TemplateField HeaderText="No Of Bedrooms" ItemStyle-CssClass="txtLT">
                                                <ItemTemplate>
                                                    <asp:Label ID="lblno_of_bedrooms" runat="server" Text='<%# Eval("room_no") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Scalable Area" ItemStyle-CssClass="txtRT">
                                                <EditItemTemplate>
                                                    <asp:TextBox ID="txtscalable_area" runat="server" Text='<%# Eval("scalable_area") %>'></asp:TextBox>
                                                </EditItemTemplate>
                                                <ItemTemplate>
                                                    <asp:Label ID="lblscalable_area" runat="server" Text='<%# Eval("scalable_area") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Carpet Area" ItemStyle-CssClass="txtRT">
                                                <EditItemTemplate>
                                                    <asp:TextBox ID="txtcarpet_area" runat="server" Text='<%# Eval("carpet_area") %>'></asp:TextBox>
                                                </EditItemTemplate>
                                                <ItemTemplate>
                                                    <asp:Label ID="lblcarpet_area" runat="server" Text='<%# Eval("carpet_area") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Price/SqFt." ItemStyle-CssClass="txtRT">
                                                <EditItemTemplate>
                                                    <asp:TextBox ID="txtprice_per_sq_ft" runat="server" Text='<%# Eval("price_per_sq_ft") %>'></asp:TextBox>
                                                </EditItemTemplate>
                                                <ItemTemplate>
                                                    <asp:Label ID="lblprice_per_sq_ft" runat="server" Text='<%# Eval("price_per_sq_ft") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="CC Price/SqFt." ItemStyle-CssClass="txtRT">
                                                <EditItemTemplate>
                                                    <asp:TextBox ID="txtcc_price_per_sq_ft" runat="server" Text='<%# Eval("cc_price_per_sq_ft") %>'></asp:TextBox>
                                                </EditItemTemplate>
                                                <ItemTemplate>
                                                    <asp:Label ID="lblcc_price_per_sq_ft" runat="server" Text='<%# Eval("cc_price_per_sq_ft") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Total Price (in lacs)" ItemStyle-CssClass="txtRT">
                                                <EditItemTemplate>
                                                    <asp:TextBox ID="txttotal_price" runat="server" Text='<%# Eval("total_price") %>'></asp:TextBox>
                                                </EditItemTemplate>
                                                <ItemTemplate>
                                                    <asp:Label ID="lbltotal_price" runat="server" Text='<%# Eval("total_price") %>'></asp:Label>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="" ItemStyle-CssClass="txtLT">
                                                <ItemTemplate>
                                                    <asp:ImageButton runat="server" ID="btnEditItem" CssClass="edBtn" ImageUrl="~/Admin/Includes/Images/edit.png"
                                                        ToolTip="Edit Item" CommandName="EditItem" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />
                                                    <asp:ImageButton runat="server" ID="btnDeletetem" CssClass="edBtn" ImageUrl="~/Admin/Includes/Images/delete.png"
                                                        CommandName="DeleteItem" ToolTip="Delete Item" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                        </Columns>
                                    </asp:GridView>
                                </div>
                            </div>
                        </td>
                    </tr>
                </table>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

解决方案

Use the "C" parameter in the ToString function, and make sure you set the globalaztion attributes.

string parseValueIntoCurrency(double number) {
   // set currency format
   string curCulture = Thread.CurrentThread.CurrentCulture.ToString();
   System.Globalization.NumberFormatInfo currencyFormat = new 
       System.Globalization.CultureInfo(curCulture).NumberFormat;

   currencyFormat.CurrencyNegativePattern = 1;

   return number.ToString("c", currencyFormat);
}

If you want to use a different Culture (say you're in USA, and you want the Indian format) then just use the appropriate CultureInfo element rather than getting it out of the current thread.

EXTRA INFO DUE TO OP EDIT

All right, what you're wanting to do to get this into your grid, is to create a PROTECTED function which takes in the number to be converted, and returns the converted string (this is basically the code above.

Now, on the ASPX side, you need to use that function in your grid view.
So, instead of this:

 <asp:TemplateField HeaderText="Total Price (in lacs)" >
   <EditItemTemplate>
      <asp:TextBox ID="txttotal_price" runat="server" 
                   Text='<%# Eval("total_price") %>' />
    </EditItemTemplate>
    <ItemTemplate>
       <asp:Label ID="lbltotal_price" runat="server" 
                  Text='<%# Eval("total_price") %>'> />
    </ItemTemplate>
 </asp:TemplateField>

you'll use this templatefield:

  <asp:TemplateField HeaderText="Total Price (in lacs)" >
    <EditItemTemplate>
       <asp:TextBox ID="txttotal_price" runat="server" 
                    Text='<%# Eval("total_price") %>' />
    </EditItemTemplate>
    <ItemTemplate>
        <%# parseValueIntoCurrency(Eval("total_price")) %>'>
     </ItemTemplate>
 </asp:TemplateField>

Note, two things. The first is that I'm still passing the UNFORMATTED value into the EDIT TEMPLATE, and that I'm not instantiating an extra LABEL in the ITEM TEMPLATE.

The reason I'm not doing the extra label, is because we just don't need it in there. That's just a bit more processor/memory overhead that you just don't need to incur.

As for passing the unformatted value to the text field, that's because it'll ultimately be easier to validate without having to parse out the commas and other string elements.

这篇关于将十进制数字格式转换为印度货币格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
C#/.NET最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆