2015-01-25 9 views
0

을 통해 채울 나는이 ObjectDataSourceGRIDVIEW ObjectDataSource를이 저장 프로 시저

<asp:ObjectDataSource 
    ID="oDataSourceHistoricoDoencasCliente" runat="server" 
    DeleteMethod="DeleteById" 
    InsertMethod="Insert" 
    SelectMethod="SelectByIdCliente" 
    TypeName="SOSSemTempo.BusinessObjects.Pessoa.HistoricoDoencasCliente"> 
    <DeleteParameters> 
     <asp:Parameter Name="Id" Type="Int32" /> 
    </DeleteParameters> 
    <InsertParameters> 
     <asp:Parameter Name="IdCliente" Type="Int32" /> 
     <asp:Parameter Name="IdDoenca" Type="Int32" /> 
    </InsertParameters> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="IdCliente" QueryStringField="Id" Type="Int32" DefaultValue="NULL" /> 
    </SelectParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="Id" Type="Int32" /> 
     <asp:Parameter Name="IdDoenca" Type="Int32" /> 
    </UpdateParameters> 
</asp:ObjectDataSource> 

내가 저장 프로 시저에서 SelectMethodSelectByIdCliente받을 수있는 데이터를 사용하는 것을 시도하고있다. 그러나 페이지가로드 될 때 메서드가 호출되고 (중단 점을 사용하여 확인) 메서드는 예상 행을 사용하여 DataReader을 반환하지만 메서드를 실행하면 그리드가 비어있는 것으로 표시됩니다.

이것은 SelectByIdCliente 방법 :

public SqlDataReader SelectByIdCliente(int IdCliente) 
{ 
     return Database.ExecuteStoredProcedureDataReader("sprSelectHistoricoDoencaCliente", new string[] { "IdCliente" }, new object[] { IdCliente }); 
} 

public static SqlDataReader ExecuteStoredProcedureDataReader(string strStoredProcedureName, string[] strParameters, object[] oValues) 
{ 
    return GetSqlCommand(strStoredProcedureName, strParameters, oValues).ExecuteReader(CommandBehavior.CloseConnection); 
} 

private static SqlCommand GetSqlCommand(string strStoredProcedureName, string[] strParameters, object[] oValues) 
{ 
     if (strParameters.Length != oValues.Length) 
      throw new Exception("Numero de parametros e valores não batem."); 

     SqlConnection conn = Database.GetConnection(); 
     conn.Open(); 

     SqlCommand cmd = new SqlCommand(strStoredProcedureName, conn); 
     cmd.CommandType = CommandType.StoredProcedure; 

     for (int i = 0; i < strParameters.Length; i++) 
     { 
      cmd.Parameters.AddWithValue(strParameters[i], oValues[i]); 
     } 

     return cmd; 
    } 

사람이 내가 뭘 놓친 거지가 알고 있습니까?

UPDATE : GridView 내 실수를받은 ObjectDataSource

<asp:GridView 
    ID="gvHistoricoDoencaCliente" 
    runat="server" 
    AllowPaging="True" 
    AllowSorting="true" 
    DataSourceID="oDataSourceHistoricoDoencasCliente" 
    EmptyDataText="Não há registros de histórico de doença para este cliente." 
    ShowFooter="True"> 
</asp:GridView> 

답변

0

을 사용하고 있습니다. Grid View에서 PagingSorting을 사용하고 있었고 수동 구현이없는 ObjectDataSource을 사용할 때는 모두 지원되지 않았습니다. 나는 을 사용하여 DataSource을 얻고 DataBind()을 사용하는 것과 같은 다른 시도를 한 후에 나타났습니다. 그 응용 프로그램이 던지기 전에 던진 exception 던졌다. 더 나은 시각화를 위해 GridView 코드로 내 질문을 업데이트 할 것입니다.