我有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 method的方法,它用于从DB检索数据。
public int ExecuteNonQuery(CommandType commandType, string sql, MySqlParameter[] commandParameters)
{
...
return rowsAffected;
}所以在我的OjectdataSource的Getdata方法中
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);
}web上所有的例子都是用存储过程实现的,有人能帮我做一下吗?我在这里得到的错误是我无法绑定网格视图,无法将数据集转换为可更新数据集。那么,如何使用datatable绑定到网格视图呢?
发布于 2012-01-13 20:49:11
只需将SelectMethod的签名从
private DataView GetData(int StartRow, int PageSize)至
public DataTable GetProducts(MyNewParameter,StartRow,PageSize)并在方法的末尾返回dt。
一个很好的例子:http://www.codeproject.com/KB/aspnet/PagingWithODS.aspx
发布于 2012-01-13 20:51:37
如何使用数据表绑定到网格视图
此示例说明如何使用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查询。
如果您使用的是System.Data.SqlClient而不是MySql.Data.MySqlClient,请将这些类重命名为SqlCommand和SqlDataAdapter。
https://stackoverflow.com/questions/8850712
复制相似问题