2011-11-14 3 views
1

내 프로젝트에서 인도 큐레이니 형식으로 가격을 표시해야하는 C# asp.net 4.0을 사용하고 있습니다.서식 10 진수를 인도 통화로 변환

예 : 그것은으로 수행 할 수 있도록

내 번호는 12550000.00 그때 내가 1,25,50,000.00

로 표시 할 것입니다하지만 난 내가있는 gridview에 데이터를 바인딩 할 때이있는 gridview에 표시 할 마크 업 페이지. 각 Item Data Bound에 대해 Eval을 배치합니다.

그러나 쉼표로 구분 된 값을 표시하는 데 대한 나의 시나리오를 설명하고자합니다.

사용자가 값을 입력하고 추가를 클릭하는 gridview 위에 텍스트 상자가 있습니다.

이것은 viewstate에 추가되고 viewstate는 gridview에 바인드됩니다.

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 속성을 설정합니다. 그럼 그냥 현재 스레드에서 그것을 얻기보다는 적절한은 CultureInfo 요소를 사용

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

다른 문화를 사용하려면

은 (당신이 미국에서 왔다고, 당신은 인도의 형식을 원하는).

OP 편집

좋아, 당신이 당신의 그리드에이를 얻기 위해 무엇을하고자하는지, 변환 할 수 취하는 보호 기능을 만드는 것입니다 모두, 반환으로 인해 EXTRA 정보 . 변환 된 문자열 (이 기본적으로 위의 코드 지금

는 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> 
,536,

다음 템플릿 입력란을 사용하십시오 :

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

참고 사항, 두 가지. 첫 번째는 여전히 UNFORMATTED 값을 EDIT TEMPLATE에 전달 중이며 ITEM TEMPLATE에 추가 ​​LABEL을 인스턴스화하지 않는다는 것입니다.

내가 여분의 라벨을 쓰지 않는 이유는 우리가 그 라벨을 필요로하지 않기 때문입니다. 이는 프로세서/메모리 오버 헤드가 조금 더 많아서 발생하지 않아도됩니다.

포맷되지 않은 값을 텍스트 필드로 전달하는 것은 궁극적으로 쉼표 및 기타 문자열 요소를 구문 분석하지 않고도 확인하기가 더 쉽기 때문입니다.

+0

위대한 답변을 완벽하게 구현했습니다. 감사합니다. – Murtaza

관련 문제