데이터 컨트롤은 null 값이나 누락된 데이터를 처리하기 위한 여러 가지 방법을 지원합니다. 예를 들어 GridView, FormView 및 DetailsView는 모두 빈 데이터 텍스트 또는 빈 데이터 템플릿 속성을 지원합니다. 데이터 소스가 데이터 행을 반환하지 않으면 이러한 속성을 사용하여 컨트롤에 표시되는 콘텐츠를 지정할 수 있습니다. 빈데이터텍스트와 빈데이터템플릿 중 하나만 설정하면 됩니다(둘 다 설정하면 빈데이터템플릿이 오버로드됩니다). 바인딩된 필드(및 파생 필드 유형), 템플릿 필드 또는 데이터 소스 매개 변수 개체에 ConvertEmptyStringToNull 속성을 지정하여 연결된 데이터 소스 작업 전에 클라이언트의 String.Empty 값을 null 값으로 변환해야 함을 나타낼 수도 있습니다. 이라고 합니다.
ObjectDataSource는 ConvertNullToDbNull 속성도 지원합니다. 관련 메서드에서 DbNull을 사용하여 null 값을 바꿔야 하는 경우(Visual Studio 데이터 세트의 TableAdapter 클래스에 이 요구 사항이 있음) 이 속성을 true로 설정할 수 있습니다. 데이터 소스에서 반환된 필드 값이 null일 때 표시할 콘텐츠를 지정하는 바인딩된 필드(및 파생 필드 유형)의 NullDisplayText 속성을 지정할 수도 있습니다. 편집 모드에서 값이 변경되지 않으면 업데이트 작업 중에 해당 값이 백엔드 데이터 소스에 null 값으로 반환됩니다. 마지막으로, 데이터 소스 매개변수의 DefaultValue 속성을 지정할 수도 있습니다. 전달된 매개변수 값이 비어 있는 경우 이 속성은 매개변수에 기본값을 할당합니다. 이러한 속성은 "체인 반응형"입니다. 예를 들어 ConvertEmptyStringToNull 및 DefaultValue가 모두 설정된 경우 String.Empty 값은 먼저 null로 변환된 다음 기본값으로 변환됩니다.
<asp:세부정보 보기……>
〈분야〉
<asp:BoundField DataField="전화" HeaderText="전화" NullDisplayText="목록에 없음" SortExpression="전화" />
<asp:BoundField DataField="팩스" HeaderText="팩스" NullDisplayText="목록에 없음" SortExpression="팩스" />
</필드>
<빈 데이터 템플릿>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/warning.gif" />표시할 기록이 없습니다
</EmptyDataTemplate>
</asp:자세히보기>
<asp:SqlDataSource……>
<매개변수 업데이트>
<asp:Parameter Name="ContactTitle" Type="String" DefaultValue="Owner" ConvertEmptyStringToNull="true" />
<asp:매개변수 이름="지역" 유형="문자열" ConvertEmptyStringToNull="true" />
<asp:매개변수 이름="전화" 유형="문자열" ConvertEmptyStringToNull="true" />
<asp:매개변수 이름="팩스" 유형="문자열" ConvertEmptyStringToNull="true" />
<asp:매개변수 이름="CustomerID" 유형="문자열" />
<//UpdateParameters>
…
</asp:SqlDataSource>
이러한 속성을 사용하면 null 값을 처리하여 필터의 값이 선택될 때까지 데이터 소스의 모든 값을 처음에 표시하는 드롭다운 목록 필터를 구현할 수 있습니다. 이를 다음과 같이 구현합니다. 먼저 빈 문자열 값이 있는 데이터 항목을 드롭다운 목록에 추가하고 데이터 소스의 드롭다운 목록과 관련된 ControlParameter(제어 매개 변수)의 ConvertEmptyStringToNull 속성을 설정합니다.
그런 다음 데이터 소스의 SelectCommand에서 null 값을 감지하여 모든(필터링되지 않은) 값을 반환할 수 있습니다. 다음 예에서는 간단한 SQL 명령을 사용하여 이 기술을 보여 주지만 저장 프로시저 구현에서 Null 검사를 수행할 수도 있습니다. 드롭다운 목록 데이터 소스의 값을 "전체"(이 항목은 당사가 정적으로 추가함) 데이터 항목에 추가할 수 있도록 하는 드롭다운 목록의 AppendDataBoundItems 속성을 사용하십시오. 동시에, 기본적으로 SelectCommand에 전달된 관련 매개 변수의 값 중 하나가 비어 있으면 SqlDataSource는 Select 작업을 수행하지 않는다는 점에 유의해야 합니다. null 값이 전달될 때 Select 작업을 강제로 실행하려면 해당 CancelSelectOnNullParameter 속성을 false로 설정하면 됩니다.
<asp:DropDownList AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="state" DataValueField="state" ID="DropDownList1" runat="서버">
<asp:ListItem Value="">ALL</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %>" ID="SqlDataSource2" runat="server" SelectCommand="SELECT DISTINCT [state] FROM [authors]">
</asp:SqlDataSource>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %>" ID="SqlDataSource1" runat="server" SelectCommand="SELECT au_id, au_lname, au_fname, state FROM 작성자 WHERE state = IsNull( @state, 상태)" CancelSelectOnNullParameter="False">
<파라미터 선택>
<asp:ControlParameter ControlID="DropDownList1" Name="state" PropertyName="SelectedValue" Type="String" />
<//매개변수 선택>
</asp:SqlDataSource>