2012-01-13 1 views
1

グリッドビューに表示するレコードは1000ですが、ObjectDataSourceを使用してグリッドビューにバインドします。私は、オープンとクローズの接続を行うクラス[Dataserver]を持つデータアクセス層でデータは、ストアドプロシージャを使用せずにObjectDataSourceを使用してグリッドビューをバインドします

<asp:ObjectDataSource ID="odsProducts" runat="server" SelectMethod="GetProducts" 
       TypeName="ProductsList" EnablePaging="True" MaximumRowsParameterName="PageSize" 
       SelectCountMethod="GetRowsCount" StartRowIndexParameterName="StartRow"></asp:ObjectDataSource> 

        <asp:GridView ID="UserTable" runat="server" AllowPaging="True" DataSourceID="odsProducts" 
         SelectedIndex="0" DataKeyNames="UserID" ShowHeaderWhenEmpty="True" BorderStyle="Groove" 
         OnRowDataBound="UserTable_RowDataBound" AutoGenerateColumns="false"> 

、私は、DBからデータを取得するために使用されるExecuteNonQueryメソッドと呼ばれる方法があります。ウェブでOjectdataSource

private DataView GetData(int StartRow, int PageSize) 
{ 
    DataServer server = new DataServer(); 
    DataTable dt = new DataTable(); 
    int newOrgID = 60; 
    string userQuery = "Select tbl_User.UserID, tbl_User.FirstName, tbl_User.LastName, tbl_User.Email, tbl_User.PhoneNumber, tbl_User.CreatedBy, tbl_Organisation.OrganisationName from tbl_user WHERE [email protected] order by tbl_user.LastName asc"; 
    MySqlParameter[] para = new MySqlParameter[1]; 
    para[0] = new MySqlParameter("@OrganisationID", MySqlDbType.Int32); 
    para[0].Value = newOrgID ; 
    dt = server.ExecuteQuery(CommandType.Text, userQuery, para); 
} 

すべての例の私の函方法でそう

public int ExecuteNonQuery(CommandType commandType, string sql, MySqlParameter[] commandParameters) 
{ 
    ... 
    return rowsAffected; 
} 

は、ストアドプロシージャであるいくつかのいずれかは、これを行うに私を助けることができます。ここでエラーが発生するのは、グリッドビューをバインドできず、データセットをdatableに変換できないということです。だから私は、GridViewの

答えて

0

への結合を行うためにデータテーブルを使用するにはどうすればよいだけ

public DataTable GetProducts(MyNewParameter,StartRow,PageSize) 

private DataView GetData(int StartRow, int PageSize) 

からあなたSelectMethodの署名を変更し、メソッドの最後にdtを返します。

良い例:私は、GridViewコントロールにバインドを行うにはデータテーブルを使用するにはどうすればよいhttp://www.codeproject.com/KB/aspnet/PagingWithODS.aspx

0

この例では、あなたのデータソースとしてのDataTableを使用するGridViewにバインドする方法を示しています。

MySqlCommand sm = new MySqlCommand("SELECT * FROM table", database_connection); 
MySqlDataAdapter sa = new MySqlDataAdapter(sm); 
DataTable dt = new DataTable(); 
sa.Fill(dt); // store query results in dt 

gv.DataSource = dt; 
gv.DataBind(); 

これはまた、ストアドプロシージャまたはのObjectDataSourceを使用せずに、選択クエリを実行する方法を示しています。

MySql.Data.MySqlClientではなくSystem.Data.SqlClientを使用している場合は、クラス名をSqlCommandSqlDataAdapterに変更します。

関連する問題