저는 ASP gridview 컨트롤이 있습니다. 항목 템플릿 열에 ASP 레이블 컨트롤이 있습니다. 격자를 사용하여 데이터에 바인딩 -Eval을 사용하여 잘린 문자열 표시
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description") %>'></asp:Label>
</ItemTemplate>
그러나이 문자열의 값은 최대 80 자까지 가능합니다. 그러나 열 길이를 너무 길게 할 여유가 없습니다. 그리고 제한이 있으므로 Wrap="true"
을 사용할 수없고 열 너비를 제한 할 수 있습니다.
그래서 솔루션은 그리드에 약 50 자만 표시하고 전체 문자열을 도구 설명으로 표시 할 수 있다고 생각했습니다. 나는 이것을 사용하여 이것을 할 수 있었다. -
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description").ToString().Substring(0,50) %>' ToolTip='<%# Eval("Description") %>'></asp:Label>
</ItemTemplate>
그리드 열에 문자열의 처음 50자를 표시한다. 마우스 포인터가 텍스트 위에 놓일 때 전체 문자열이 도구 설명으로 표시됩니다. 그러나 문제는 문자열 길이가 50 자 미만일 때 발생합니다. 이 경우 예외가 발생합니다.
문자열 길이를 확인하여 조건부 표시가 가능하도록이 코드 조각을 수정 해 보았습니다. 그러나, 나는 이것을 작동시키지 못했습니다.
이 문제를 해결할 방법이 있습니까? Eval() 내에서 javascript 함수를 호출 할 수 있습니까? 당신이 당신의 데이터 바인딩 식에 대한 특별한 처리를 필요로 할 때마다
은'조심 평가 ("...") .ToString()'. Eval에서 null을 반환하면 NullReferenceException이 발생합니다. 당신은'<% # TruncateString ((Eval ("FieldName") ?? "") .ToString(), 150) %>'을 시도해 볼 수 있습니다. – Ruben
전화하세요. 이전에이 작업을 수행했을 때부터 이전 코드를 찾고 있었지만 찾을 수 없었기 때문에 위의 코드는 매우 유용했습니다. 나는 개인적으로 너를 좋아하니 ?? 생각; 병합 연산자 만 그렇게 (불필요하게) 애매하지 않은 것이 더 읽기 쉬울 것입니다. –
개인적으로 저는이 솔루션으로 구두점을 너무 많이 사용합니다. DataTables를 사용하고'DBNull' 값을 얻는다면'<% # TruncateString ((string) Eval ("FieldName"), 150) %>'은 폭탄을 터뜨릴 것입니다. – Ruben