我有一个 GridView,我分配了 DataSource 和 Bind,如下所示:

protected void Search(object sender, EventArgs e)
{
    using(SqlConnection con = new SqlConnection(constring))
    using(SqlCommand com = new SqlCommand("XXX", con))
    {
        com.CommandType = CommandType.StoredProcedure;

        // parameter declarations are here

        con.Open();

        SqlDataReader rdr = com.ExecuteReader();
        gvResults.DataSource = rdr;
        gvResults.DataBind();

    }
}

然后有一个 OnRowBound 方法,它看起来像这样:
protected void gvResults_OnRowBound(object sender, GridViewRowEventArgs e)
{
    GridViewRow row = e.Row;

    if (row.RowType != DataControlRowType.DataRow) return;

    DataRowView rowdata = (DataRowView)row.DataItem;

    // fancy stuff will happen here

}

当到达尝试将行的 DataItem 转换为 DataRowView 的行时,会抛出一个错误,内容如下:



我知道我显然没有将此 DataItem 转换为正确类型的类,但我的问题是 当 DataSource 是 SqlDataReader 时要转换到的正确类是什么?

还是我完全走错了路?

最佳答案

正确的类型是 IDataRecord

关于c# - 在 GridView 的 RowBound 事件上将 SqlDataReader DataItem 转换为 DataRowView 时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23056100/

10-11 08:08