ObjectDataSource 운영시 PostBack 일어날 시 DataBind 도 같이 일어나는 현상 ..
ASP.NET 버그라고 생각했는데 아닌거 같기도 하고 초보 입장에서는 당황했다 .
현상은 이렇다 aspx 페이지에서 ObjectDataSource에 대한 DataSourceID 를 명시할 시
페이지의 PostBack이 일어날 때마다 무조건 해당 Select 메소드가 바인드 되었다
<asp:GridView ID="ViewCustNew" runat="server" EnableViewState="false CellPadding="2" ForeColor="#333333" Width="98%" AutoGenerateColumns="False” OnRowCreated="ViewCustNew_RowCreate" OnSorting="ViewCustNew_Sorting" OnRowDataBound="ViewCustNew_RowDataBound" OnSelectedIndexChanged="ViewCustNew_SelectedIndexChanged" AllowSorting="false" OnSorted="ViewCustNew_Sorted" AllowPaging="true" PageSize="10" onpageindexchanging="ViewCustNew_PageIndexChanging"
DataSourceID="odsTest"
>
<asp:ObjectDataSource ID="odsTest" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="sp_call_Procedure" TypeName="DataSet.data.BindMethod">
<SelectParameters>
<asp:Parameter Name="IN_PARAM1" Type="String" />
<asp:Parameter Name="IN_PARAM2" Type="String" />
<asp:Parameter Name="IN_PARAM2" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
예를 들어 aspx 페이지에 해당 소스가 코딩 되었다고 가정할 때
PostBack이 일어날 시 내 의지와 상관없이 데이터베이스로 sp_call_Procedure 프로시저가 계속 호출이 되는 것이다 .
부하가 있는 프로시저나 쿼리를 호출시에는 데이터베이스입장에서는 상당히 부하를 받는 것이다!!!
이를 해결 하기 위해 해결 방안을 찾으니
DataSourceID를 aspx 페이지에 절대 명시하지 말라는 것이 었다
데이터 바인딩시에
비하인드 코드 부분에 반드시 명시를 해주어야만 PostBack이 일어나도 쓸데없이 호출이 되지 않는다.!!!!!!!!!!!!
'ASP.NET' 카테고리의 다른 글
[ASP.NET] SessionState 최대 타임아웃 설정 (0) | 2015.03.13 |
---|---|
[asp.net] HttpException (0x80004005): 최대 요청 길이를 초과했습니다 해결방안 (0) | 2014.09.05 |
Calendar 컨트롤 간단히 특정 요일 글자 색상 변경 해보기 (0) | 2013.10.11 |
Html 형식의 Excel 변환시 OpenOffice에서 한글이 깨지는 현상 (0) | 2013.09.26 |
ASP.NET Gridview 컨트롤의 DataKeyNames의 활용 (0) | 2013.02.06 |