2011-02-17 5 views
0

I가있는 gridview 및 OnRowDataBound 이벤트를 가지고 열이 함수에 링크되어이 코드는 데이터 객체의 속성 값에 보이는의 gridview 행 평가 : name 매개 변수 인덱스 대신

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    ThisRow = e.Row.DataItem as MyObjectModel; 

    if (ThisRow.Property1 == null) { e.Row.Cells[5].Text = "-"; } 

source이고 null이면 Column 5에 "-"를 표시하도록 Null을 변환합니다. 문제는 제가 gridview의 열 순서를 변경하면 다른 모든 수정의 인덱스를 변경해야한다는 것입니다. "e.Row.Cells [5] .Text"문을 "열 머리글이 xyz 인 셀"로 변경하는 것이 좋습니다.

제안 사항?

감사합니다.

+0

e가 현재 행 값을 반환하기 때문에 어렵습니다. – Student

답변

0

난 당신이 당신의 코드보다는 뒤에 gridview 코드에서 처리하는 것이 더 좋을 것 같아요. 특히 주변 열을 뒤섞고 있다면.

다음은 조랑말의 예입니다. 필요에 따라 자유롭게 편집하십시오.

<asp:TemplateField HeaderText="Likes Ponies?"> 
    <ItemTemplate> 
     <asp:Label ID="uxLikesPoniesLabel" runat="server" Text=’<%# 
     DataBinder.Eval(Container.DataItem, "FavoritePonies").ToString() == "" ? 
     "I like " + DataBinder.Eval(Container.DataItem, "FavoritePonies") + " Ponies!" : 
     "-" 
     %>’ /> 
    </ItemTemplate> 
    </asp:TemplateField> 

나는 C# (boolean condition) ? "value if true" : "value if false" 여기를 사용하고 있습니다.

그래서이 코드는 특정 행의 FavoritePonies 열이 ""인지 확인합니다 (NULL 값이 빈 문자열로 표시되기 때문에). 그렇다면 "-"가 표시됩니다. null이 아니면 원래 데이터베이스에 있던 내용을 DataBinder.Eval(Container.DataItem, "FavoritePonies")과 함께 "I like pony!"라고 표시합니다.