fonte de dados é um tipo inválido. Ele deve ser um IListSource, IEnumerable, ou IDataSource

votos
1

Eu estou tentando preencher uma exibição de detalhes do gridview selecionado índice de evento de mudança, mas eu tenho um erro, plz me ajudar

public void viewDetailsNew(decimal decDv)
    {
        SubjectInfo infosubject = new SubjectInfo();
        SubjectSp spcubject = new SubjectSp();
        dvSubject.DataSource = spcubject.SubjectViewDetails(decDv);
        dvSubject.DataBind();
        mvSubject.ActiveViewIndex = 1;
    }

public SubjectInfo SubjectViewDetails(decimal decsubjectid)
    {
        SubjectInfo infosubject = new SubjectInfo();
        SqlDataReader sqlreader = null;
        try
        {
            if (sqlcon.State == ConnectionState.Closed)
            {
                sqlcon.Open();
            }
            SqlCommand sqlcmd = new SqlCommand(SubjectView, sqlcon);
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Parameters.Add(@subjectId, SqlDbType.Decimal).Value = decsubjectid;
            sqlreader = sqlcmd.ExecuteReader();
            while (sqlreader.Read())
            {
                infosubject.subjectId = decimal.Parse(sqlreader[subjectId].ToString());
                infosubject.subjectName = sqlreader[subjectName].ToString();
                infosubject.shortName = sqlreader[shortName].ToString();

            }
        }
        catch
        {
            throw;
        }
        finally
        {
            sqlreader.Close();
            sqlcon.Close();
        }

        return infosubject;
    }

protected void gvViewSubject_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        ViewState[subjectId] = gvViewSubject.DataKeys[e.NewSelectedIndex][subjectId].ToString();
        decimal decDv = decimal.Parse(ViewState[subjectId].ToString());
        viewDetailsNew(decDv);
    }
Publicado 14/05/2013 em 05:16
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você está tentando vincular a um único objeto quando você precisa de uma coleção ou IEnumerable

tente este

 public IEnumerable<SubjectInfo> SubjectViewDetails(decimal decsubjectid)
{
    var list = new List<SubjectInfo>();

    try
    {
        if (sqlcon.State == ConnectionState.Closed)
        {
            sqlcon.Open();
        }
        SqlCommand sqlcmd = new SqlCommand("SubjectView", sqlcon);
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.Parameters.Add("@subjectId", SqlDbType.Decimal).Value = decsubjectid;
        using (var sqlreader = sqlcmd.ExecuteReader())
        {
            while (sqlreader.Read())
            {
                SubjectInfo infosubject = new SubjectInfo();
                infosubject.subjectId = decimal.Parse(sqlreader["subjectId"].ToString());
                infosubject.subjectName = sqlreader["subjectName"].ToString();
                infosubject.shortName = sqlreader["shortName"].ToString();
                list.Add(infosubject);
            }
        }
    }
    catch
    {
        throw;
    }
    finally
    {
        sqlcon.Close();
    }

    return list;
}
Respondeu 14/05/2013 em 09:58
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more