2012-11-20 2 views
0

내 데이터베이스 테이블에서 가져온 특정 항목의 총 비용을 표시하는 열이 내 gridview에 있습니다. 그러나 사용자는 자신의 계정에 통화 정보가 첨부되어 있습니다. 내가하고 싶은 것은 개별 사용자의 통화 정보를 기반으로이 열을 변환하는 것입니다. 나는 다음과 같은 시도 :단위 변환을 gridview 열에 적용 할 수 있습니까?

<asp:HiddenField id="currencyconvfactor" runat="server" /> 

<asp:TemplateField HeaderText="Total" SortExpression="Total"> 
    <ItemTemplate> 
     <%# currencyconvfactor.Value %> //this is just a test. see below for the issue. 
    </ItemTemplate> 
</asp:TemplateField> 

코드

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
      currencyconvfactor.Value = 12345 
      //i simplified retrieving the specific factor value here as I do some database commands to pull the specific value 
    } 

뒤에 그러나, 나는 템플릿 필드 열은 항상 비어있는 것을 알 수 있습니다. 그리드 뷰가 페이지로드 이벤트 전에 생성된다는 의미입니까? 그렇다면 첫 페이지로드시 어떻게 열 변환을 수행 할 수 있습니까? 보다 구체적으로, 변환 계수에 액세스하여 시간에 따라 변환을 수행하려면 어떻게해야합니까?

답변

0

값을 정의한 후, GridView.DataBind()를 호출

+0

와우이 문제였다에게 반환하는 방법을 정의합니다. 그런 바보 같은 실수. 감사! – Tony

1

당신은 열을 액세스하고 당신이 필요로하는 어떤 계산을 할 수있는 RowDataBound 이벤트를 사용하여보고 할 수 있습니다 :

에서 .aspx :

<Columns> 
    <asp:TemplateField HeaderText="Template Field"> 
     <ItemTemplate> 
      <asp:Label ID="lblConvValue" Runat="server" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

코드 숨김

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Get the current row's data 
     DataRowView rowView = (DataRowView)e.Row.DataItem; 

     // Do your conversion 
     var conv = int.Parse(rowView["valueToConvert"].ToString()); 
     var converted = conv * 12345; // Whatever conversion you want. 

     // Set the value of the control in the ItemTemplate 
     Label lblConvValue= (Label)e.Row.FindControl("lblConvValue"); 
     lblConvValue.Text = converted.ToString(); 
    } 
} 
1

모든 행에서 동일한 통화 변환 요소를 사용하는 경우 다음을 수행 할 수 있습니다. ... 코드에서

<ItemTemplate> 
    <%#GetCurrencyconvfactor()%> 
</ItemTemplate> 

...

뒤에 값

public string GetCurrencyconvfactor() 
    { 
     //you can also pass in custID as an argument if each row uses different factor 
     return "123"; // or get this from the user profile/settings 
    } 
관련 문제