2012-01-13 3 views
1

У меня есть 1000 записей для отображения в виде сетки, поэтому я использую ObjectDataSource для привязки к виду сетки.Данные привязки gridview с использованием 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"> 

В слое доступа к данным, у меня есть класс [Dataserver] который делает открытое и близкое соединение, у меня есть метод, называемый метод ExecuteNonQuery, который используется для извлечения данных из БД.

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

Так что в моем методе GetData от 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); 
} 

Все примера в сети находятся с хранимой процедуры может кто-нибудь помочь мне в этом. Ошибка, которую я получаю здесь, это то, что я не могу привязать представление сетки, не могу преобразовать набор данных в datable. Так как я могу использовать DataTable сделать привязку к GridView

ответ

0

Как я могу использовать DataTable сделать привязку к GridView

Этот пример показывает, как можно привязать к GridView, используя DataTable в качестве источника данных:

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.

Если вы используете System.Data.SqlClient, а не MySql.Data.MySqlClient, переименуйте классы на SqlCommand и SqlDataAdapter.

Смежные вопросы