asp.net
  • gridview
  • binding
  • 2011-09-23 3 views 0 likes 
    0

    현재 데이터 바인딩을하고 있습니다 :바인딩을 수행 할 때 gridview 내용의 형식을 지정하는 방법은 무엇입니까?

    <asp:TemplateField HeaderText="Priority" SortExpression="priority"> 
        <ItemTemplate> 
         <asp:Label Visible="true" runat="server" ID="priorityLabel" Text='<%# bind("numberTemplatePriority") %>'></asp:Label> 
        </ItemTemplate> 
    </asp:TemplateField> 
    

    그러나이 값을 먼저 얻고 싶습니다 : < % # bind ("numberTemplatePriority") %>,이 값에 따라 정수가 나타납니다. , 나는 동등한 문자열을 보여주고 싶다. 예 : 숫자 4 인 경우 '매우 중요 함'을 표시하려고합니다.

    응용 프로그램의 다른 부분에서 사용되기 때문에 SQL 쿼리를 수정하고 싶지 않습니다.

    GridView 데이터 소스는 데이터 세트이고 "numberTemplatePriority"는 해당 열 중 하나입니다.

    미리 감사드립니다.

    답변

    1

    시도,

    <asp:Label 
        Visible="true" 
        runat="server" 
        ID="priorityLabel" 
        Text='<%# Eval("numberTemplatePriority").ToString()=="1" ? "Very Important" : 
         Eval("numberTemplatePriority").ToString()=="2" ? "Something" : "Nothing" %>' 
    /> 
    
    0

    는 다음 시도 보내기

    <%# (Eval("numberTemplatePriority") == "Very Important") ? Response.Write("Very Imprortant") : Response.Write("Not Important") %> 
    

    을하지만 난 당신이 SQL 쿼리에 상황의이 종류를 처리 할 필요가 있다고 생각합니다. 이런 종류의 구현은 그리 좋지 않습니다. 장기간에 걸쳐 귀하의 신청서를 유지하기가 어려울 것입니다.

    1

    당신은 gridview.Try이의 RowDataBound 이벤트를 사용할 수 있습니다.

    protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
        if (e.Row.RowType == DataControlRowType.DataRow) 
        { 
         Label lbl = (Label)e.Row.FindControl("priorityLabel"); 
    
         int number = Convert.ToInt32(lbl.Text); 
    
         if (number == 4) 
         { 
          lbl.Text = "Very Important"; 
         } 
        } 
    } 
    

    희망이

    을하는 데 도움이
    관련 문제