본문 바로가기
ASP.NET

ObjectDataSource 운영시 PostBack 일어날 시 DataBind 도 같이 일어나는 현상

by Hwoarang757 2013. 10. 21.

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="FalseOnRowCreated="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이 일어나도 쓸데없이 호출이 되지 않는다.!!!!!!!!!!!!