2011-11-14 9 views
1

インドのcurrenyフォーマットで価格を表示する必要があるプロジェクトでC#asp.net 4.0を使用しています。フォーマット10進数からインド通貨へのフォーマット

たとえば、 、それはで行うことができますので、

私の電話番号は12550000.00が、私は1,25,50,000.00

として、それを表示したいですが、私はGridViewのにデータをバインドするとき、これはGridViewの中に表示させたいですマークアップページ。各Item Data Boundに対してEvalを配置します。

しかし、カンマ区切りの値を表示するためのシナリオについても説明したいと思います。

私はgridviewの上にユーザーが値のエントリを作成して追加をクリックするテキストボックスのセットを持っています。

これはviewstateでaddを取得し、viewstateはgridviewにバインドされます。

グリッドビューでは、それをクリックすると編集ボタンが表示され、viewstateの値はGridViewのRowCommandイベントのテキストボックスに戻されます。更新時にviewstateデータテーブルが更新され、Bindedが再度gridviewに表示されます。ご参考のため

:以下

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; 
    } 
} 

は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> 

答えて

3

は、ToString関数で "C" パラメータを使用して、あなたがglobalaztion属性を設定してくださいためのマークアップです。

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); 
} 

あなたは別の文化を使用したい場合は、単にではなく、現在のスレッドからそれを得ることよりも、適切なのCultureInfo要素を使用します(あなたが米国にいると言う、あなたはインドのフォーマットをしたいです)。

EXTRA INFO DUE TO OP EDIT

すべての権利、あなたのグリッドにこれを取得するためにやりたいと思っているものを、変換する番号にかかる保護された関数を作成することで、リターン変換された文字列(これは基本的に上記のコードである

今、ASPX側では、あなたのグリッドビューでその機能を使用する必要が
ので、代わりにこの:。。

<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> 

あなたはこのテンプレートフィールドを使用します:

<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> 

注意してください。 1つ目は、まだUNFORMATTEDの値をEDIT TEMPLATEに渡していることと、ITEM TEMPLATEに余分なLABELをインスタンス化していないことです。

私が余分なラベルを書いていない理由は、そこにそれを必要としないからです。これは、単にプロセッサ/メモリのオーバーヘッドで、発生する必要はありません。

フォーマットされていない値をテキストフィールドに渡すのは、コンマやその他の文字列要素を解析する必要がなく、最終的に検証が容易になるためです。

+0

すばらしい答えが完璧に実装されました。ありがとうございました。 – Murtaza

関連する問題