加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在GridView的RowBound事件上将SqlDataReader DataItem强制

发布时间:2020-12-16 02:01:14 所属栏目:百科 来源:网络整理
导读:我有一个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.Sto
我有一个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的行时,将抛出一个错误,其中包含:

Unable to cast object of type ‘System.Data.Common.DataRecordInternal’ to type ‘System.Data.DataRowView’

我明白我显然没有将这个DataItem强制转换为正确的类,但我的问题是当DataSource是一个SqlDataReader时,什么是正确的类?

或者我完全走错了轨道?

解决方法

正确的类型是IDataRecord

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读