2017-11-09 11 views
0

objectdatasourceがデータを取得してそのコードの背後にあるコードを管理するのを防ぐ必要があります。私はSelectMethodを削除すると は、次のような問題は、SelectMethodが指定されていない限りオブジェクトデータソースのデータをコードビハインドでバインドしてSelectMethodを削除

選択操作はObjectDataSourceの「データソース」によってサポートされていませんが発生します。

これはあなたがコードビハインドで適切なイベントに変更/ ObjectDataSourceののSelectMethodを設定することができ、私のObjectDataSource

<asp:ObjectDataSource ID="DataSource" runat="server" TypeName="declaration_prod_liste" 
     EnablePaging="true" StartRowIndexParameterName="startrows" 
     MaximumRowsParameterName="pagesize" 
     SelectCountMethod="GetDataSourceCount"> 
</asp:ObjectDataSource> 
+1

ObjectDataSourceを使用することはできません。実際には便利なオブジェクトです。または、control/session/etcパラメータを追加して、パラメータがデータを返さないようにすることもできます。 – Crowcoder

答えて

1

です。たとえば、以下のコードでは、これはPage_Loadイベントで実行されています。 しかし、そのSelectMethodをhtmlコードで指定し、2番目のコードスニペットに示すように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

関連する問題