2017-11-09 15 views
0

objectdatasource가 데이터를 불러 오지 못하게하고 그 코드를 관리해야합니다. 나는 경우 SelectMethod을 제거 할 때 다음 문제는 경우 SelectMethod 지정하지 않는코드 뒤에 객체 데이터 소스에 대한 데이터를 바인딩하고 SelectMethod를 제거하십시오.

선택 작업이 ObjectDataSource를 '데이터 소스'를 지원하지 않습니다 발생합니다.

이 내 ObjectDataSource를

당신은 코드 숨김의 적절한 이벤트에 ObjectDataSource를의 SelectMethod을 변경/설정할 수
<asp:ObjectDataSource ID="DataSource" runat="server" TypeName="declaration_prod_liste" 
     EnablePaging="true" StartRowIndexParameterName="startrows" 
     MaximumRowsParameterName="pagesize" 
     SelectCountMethod="GetDataSourceCount"> 
</asp:ObjectDataSource> 
+1

그냥 ObjectDataSource를 사용하지 않아도됩니다. 실제로는 편의 개체입니다. 또는 제어/세션/etc 매개 변수를 추가하여 매개 변수가 데이터를 반환하지 않도록 할 수 있습니다. – Crowcoder

답변

1

입니다. 예를 들어, 아래 코드에서 Page_Load 이벤트에서이 작업이 수행되고 있습니다. 그러나 HTML 코드에서 SelectMethod를 지정한 다음 두 번째 코드 단편에 표시된대로 Selecting event에서 취소해야합니다.

귀하의 오브젝트 데이터 소스 ID가 DataSource1이라고 가정합니다.

또한 objectdatasource에 대한 hmtl에 SelectMethod를 지정해야합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataSource1.SelectMethod = "SelectMethod"; 
    GridView1.DataSourceID = DataSource1.ID ; 
    GridView1.DataBind(); 
} 

아래 코드에서와 같이 Selecting event에 취소하여 ObjectDataSource를 autopouplating을 취소 할 수 있습니다. objectdatasource html에서이 이벤트를 구독하십시오.

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
{ 
    //puty your logic when to cancel and when not to cancel 
    e.Cancel = true; 
} 

HTML은 아래처럼 보입니다.

<asp:ObjectDataSource ID="DataSource1" runat="server" TypeName="declaration_prod_liste" 
     EnablePaging="true" StartRowIndexParameterName="startrows" 
     MaximumRowsParameterName="pagesize" 
     SelectCountMethod="GetDataSourceCount" 
     SelectMethod="SomeMethod" 
     OnSelecting ="ObjectDataSource1_Selecting" > 
</asp:ObjectDataSource> 
+0

나를 생각하게하는 진짜 문제는이 링크에 있습니다. https://stackoverflow.com/questions/47180999/listview-databind-causes-lost-of-formview-data; 지금까지도 여전히 차단됨 – fatiDev

+0

그럼 결국 문제가 무엇입니까? – Sunil