Привязка данных к сетке с использованием ObjectDataSource без хранимой процедуры - PullRequest
1 голос
/ 13 января 2012

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

Итак, в моем методе 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 Organisationid=@OrganisationID 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);
}

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

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Как я могу использовать 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.

0 голосов
/ 13 января 2012

Просто измените подпись вашего SelectMethod с

private DataView GetData(int StartRow, int PageSize)

на

public DataTable GetProducts(MyNewParameter,StartRow,PageSize)

и верните dt в конце метода.

Хороший пример: http://www.codeproject.com/KB/aspnet/PagingWithODS.aspx

...