【问题标题】:Data binding a gridview using ObjectDataSource without Stored Procedure使用没有存储过程的 ObjectDataSource 数据绑定网格视图
【发布时间】:2012-02-09 15:57:19
【问题描述】:

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

在数据访问层中,我有一个 class[Dataserver],它执行打开和关闭连接,我有一个称为 executeNonQuery 方法的方法,用于从数据库中检索数据。

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);
}

网络上的所有示例都带有存储过程,有人可以帮助我做到这一点。我在这里得到的错误是我无法绑定网格视图,无法将数据集转换为数据。那么如何使用数据表来绑定到gridview

【问题讨论】:

    标签: c# asp.net data-binding objectdatasource


    【解决方案1】:

    只需将 SelectMethod 的签名更改为

    private DataView GetData(int StartRow, int PageSize)
    

    public DataTable GetProducts(MyNewParameter,StartRow,PageSize)
    

    并在方法结束时返回dt

    很好的例子:http://www.codeproject.com/KB/aspnet/PagingWithODS.aspx

    【讨论】:

      【解决方案2】:

      如何使用数据表绑定到gridview

      此示例展示了如何使用 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 的情况下执行选择查询。

      如果您使用的是System.Data.SqlClient 而不是MySql.Data.MySqlClient,请将类重命名为SqlCommandSqlDataAdapter

      【讨论】:

        猜你喜欢
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多