在上一篇 在NHibernate里执行存储过程 里给执行存储过程后返回的结果集指定了一个实体类,并且在查询方法 getCustOrderHistList 里 调用了方法 SetResultTransformer , 如果不调用 SetResultTransformer ,那么调用 IQuery 对象的 List( ) 方法后实际返回一个 Object 数组,那么就使用Object数组绑定控件 GridView 了,实体类 CustOrderHist 也懒得写了,不过 GridView 得多写点东西,下面看相应的变化:
映射关系都不需要做改变,实体类 CustOrderHist 去掉,方法 getCustOrderHistList 该成如下:
浏览页,使用SQL 事件探察器跟踪,执行到相关方法时实际执行的SQL语句和上篇文章一样.
映射关系都不需要做改变,实体类 CustOrderHist 去掉,方法 getCustOrderHistList 该成如下:
public IList getCustOrderHistList ( string customerID )
{
IQuery query = session.GetNamedQuery( "GetCustomerOrderHistory" )
.SetString( "CustomerID" , customerID );
return query.List( );
}
页面 HTML 该成如下:{
IQuery query = session.GetNamedQuery( "GetCustomerOrderHistory" )
.SetString( "CustomerID" , customerID );
return query.List( );
}
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataTextField="CompanyName"
DataValueField="CustomerID" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
Width="238px">
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="ProductName">
<ItemTemplate>
<%# ( ( object[] )Container.DataItem )[0]%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<%# ( ( object[] )Container.DataItem )[1]%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataTextField="CompanyName"
DataValueField="CustomerID" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
Width="238px">
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="ProductName">
<ItemTemplate>
<%# ( ( object[] )Container.DataItem )[0]%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<%# ( ( object[] )Container.DataItem )[1]%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
浏览页,使用SQL 事件探察器跟踪,执行到相关方法时实际执行的SQL语句和上篇文章一样.