2012-01-13 2 views
1

그리드보기에 바인딩 할 ObjectDataSource를 사용하고 있으므로 1000 개의 레코드가 모눈 뷰에 표시되도록했습니다. 데이터 액세스 계층에서 저장 프로 시저없이 ObjectDataSource를 사용하여 Gridview를 바인딩하는 데이터

<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"> 

는 I는 I가 DB에서 데이터를 검색하기 위해 사용된다 ExecuteNonQuery 메서드라는 방법이, 개폐 접속을 수행하는 클래스 [Dataserver]있다. 웹에서 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); 
} 

모든 예 내 GetData 메서드에 따라서

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을 반환합니다.

좋은 예 : I이 (가)있는 gridview에 바인딩을 할 DataTable을 사용할 수있는 방법 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를 사용하지 않고 select 쿼리를 실행하는 방법을 보여줍니다.

MySql.Data.MySqlClient 대신 System.Data.SqlClient을 사용하는 경우 클래스 이름을 SqlCommandSqlDataAdapter으로 바꿉니다.

관련 문제