2013-05-14 6 views
1

я пытаюсь заполнить один деталь просмотр из GridView выбранного индекса меняющегося события, но я получил сообщение об ошибке, плз помочь мнеИсточник данных является недопустимым типом. Он должен быть либо IListSource, IEnumerable или IDataSource

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

, что делает spcubject.SubjectViewDetails (decDv) возвращение ??? – Anuj

+0

только его соединение db – jasel

+0

dvSubject.DataSource = dvSubject.DataSource = spcubject.SubjectViewDetails (decDv) в этой строке, что возвращает spcubject.SubjectViewDetails (decDv)? – Anuj

ответ

0

Вы пытаетесь связывать к одному объекту, когда требуется сбор или IEnumerable

Попробуйте

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

 Смежные вопросы

  • Нет связанных вопросов^_^