我有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>
答案 0 :(得分:0)
我弄错了。我在Paging
上使用Sorting
和Grid View
,在没有手动实施的情况下使用ObjectDataSource
时都不支持。在尝试使用<asp:Button>
获取DataSource
并使用DataBind()
等其他方式后,我注意到了。这引发了exception
应用程序之前没有抛出的内容。我将使用GridView代码更新我的问题,以便更好地进行可视化。