【发布时间】:2015-01-25 23:20:10
【问题描述】:
我有这个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>
我正在尝试使用 SelectMethod SelectByIdCliente 从存储过程接收数据。但是当页面加载时,该方法被调用(我使用断点来检查)并且该方法返回一个带有预期行的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;
}
有人知道我错过了什么吗?
更新: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>
【问题讨论】:
标签: c# asp.net stored-procedures gridview objectdatasource