2009-03-23 3 views
1

, 나는 둘 중 하나 열을 표시하기 위해 노력하고있어 또는 다른 공공 부울 속성 사용 :ASP.net : 동적 BoundFields의 GridView에서

<Columns> 
    ... 

    <asp:BoundField Visible="<%= !ShowPurchaseDate %>" DataField="Published" HeaderText="Publicerad" SortExpression="PriceRange" DataFormatString="{0:yyyy.MM.dd}" HtmlEncode="false" /> 

    <asp:BoundField Visible="<%= ShowPurchaseDate %>" DataField="OrderDate" HeaderText="Köpt" SortExpression="OrderDate" DataFormatString="{0:yyyy.MM.dd}" HtmlEncode="false" /> 

    ... 
    </Columns> 

을하지만 그렇지 않은 없다는 오류 메시지를 받고 있어요 속성 Visisble에 대해 < %! ShowPurchaseDate %>를 포함하는 문자열에서 System.Boolean을 만들 수 있습니다.

어떻게해야합니까?

UPDATE :!

<% 번호가 ShowPurchaseDate %> 작동하지 않습니다 중 하나에 가고 어떤 데이터 바인딩이 없다한다.

보호 된 funktion을 사용하는 것도 작동하지 않습니다 (속성과 동일한 오류 메시지).

+0

메서드에서 문자열을 반환 했습니까? – Dan

+0

BoundField이므로 데이터 바인딩이 있습니다. 템플릿 필드를 만들어야 작동합니다. – Albert

+0

앨버트 (Albert)는 데이터 바인딩에 대해 옳았습니다. 그러나 BoundField 자체는 데이터 바인딩이 아닙니다. 그렇다면 <% #이 (가) 필요합니다. 템플릿을 사용하려면 템플릿으로 변환하십시오 (<% =는이 문맥에서 사용해서는 안되는 render 지시어입니다). 또는 코드에서 가시성을 설정할 수 있습니다. – Ruslan

답변

2

!

gridMain.Columns[ShowPurchaseDate ? 3 : 4].Visible = false; 

이것이 최선의 해결책인가?

+0

이것은 내가 일반적으로하는 일입니다. –

+0

그것은 최선의 해결책이 아닙니다. 그것은 항상 바뀌는 지표를 기반으로합니다. 템플릿 필드로 만들고 제안한 데이터 바인딩 방식을 사용하십시오. – Albert

+0

템플릿 필드를 사용하면 열의 컨트롤이 사라질 수는 있지만 전체 열은 사라지게 할 수 있습니다. 그래서, 나는 코드 뒤에서 할 필요가 있다는 것에 동의한다. – EfficionDave

0

부울 속성을 문자열로 반환하는 코드 숨김 보호 된 메서드를 제공하십시오.

0

당신이있는 거 코드는 # <퍼센트해야 ShowPurchaseDate %> 나는 그것을 통해 해결

+0

누가 -1 개를 주었습니까? 대답은 정확합니다 ... DataBound 필드는 <%# %>을 사용해야하며 <%= %>은 – Ruslan

+0

이 아닙니다. BoundField 자체는 데이터 바인딩 된 컨트롤이 아니므로 템플릿이 필요합니다. – Ruslan

0

당신은 shouldshowcolumn()과 같은 바인딩 대신 메서드를 호출 해 볼 수 있습니다.

관련 문제