在上一篇 在NHibernate里执行存储过程 里给执行存储过程后返回的结果集指定了一个实体类,并且在查询方法 getCustOrderHistList 里 调用了方法 SetResultTransformer , 如果不调用 SetResultTransformer ,那么调用 IQuery 对象的 List( ) 方法后实际返回一个 Object 数组,那么就使用Object数组绑定控件 GridView 了,实体类 CustOrderHist 也懒得写了,不过 GridView 得多写点东西,下面看相应的变化:
映射关系都不需要做改变,实体类 CustOrderHist 去掉,方法 getCustOrderHistList 该成如下:
        public IList getCustOrderHistList ( string customerID )
        {
            IQuery query 
= session.GetNamedQuery( "GetCustomerOrderHistory" )
                .SetString( 
"CustomerID" , customerID );
            
return query.List( );
        }
页面 HTML 该成如下:
<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>

浏览页,使用SQL 事件探察器跟踪,执行到相关方法时实际执行的SQL语句和上篇文章一样.
posted on 2007-07-12 15:09  空空儿  阅读(1079)  评论(2编辑  收藏  举报