nicye

导航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

统计

与我联系

常用链接

留言簿(1)

我参加的小组

我参与的团队

我的标签

随笔档案

相册

Friends

搜索

最新评论

阅读排行榜

评论排行榜

使用objectdatasource结合数据绑定控件进行简单三层架构的开发 [绝版]


http://www.cnblogs.com/mFrog/archive/2008/04/18/1160521.html
使用objectdatasource结合数据绑定控件进行简单三层架构的开发
贴后感,因为我上一次没有把 NicPetShop 的这种特性显示出来,NicPetShop 对这 ObjectDataSouce 支持得很好。


对于B/S架构的三层架构的开发,可能很多的人都已经了解的是比较清楚的。哪么我在这里用的是最简单的三层架构。UI + BLL + DAL + Model.

(图就略了)

引用原文:
从 05 出来以后由于功能明显比 03 夸张了很多,所以在开发的时候也就很方便。其中以数据的显示最为明显。通过 sqldatasource 可以几乎一行代码都不需要写,就能在GridView中显示出来数据,并且进行增删查改的操作,但是我个人总感觉这样做是有问题的。因为使用 sqldatasource,就明显的破坏了 3 层架构的基本改变。哪么微软在05当中,很重点的推出了 objectdatasource 这个东西,就是专门用来结合三层架构开发的一个数据源绑定控件。 在层次之间传递的也是object,这样相对来说就比较好一些。

页面代码为:
add.aspx
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="ObjectDataSource1" 
DefaultMode
="Insert">
    
<Fields>
        
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        
<asp:TemplateField HeaderText="Remark" SortExpression="Remark">
            
<InsertItemTemplate>
                
<asp:TextBox ID="TextBox1" runat="server" Height="134px" Text='<%# Bind("Remark") %>' TextMode="MultiLine" Width="286px"></asp:TextBox>
            
</InsertItemTemplate>
        
</asp:TemplateField>
        
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" SortExpression="Id" />
        
<asp:CommandField ButtonType="Button" ShowInsertButton="True" />
    
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" InsertMethod="Insert"
    SelectMethod
="GetItem" TypeName="Test.BLL.Source">
    
<SelectParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
    
</SelectParameters>
    
<InsertParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
        
<asp:Parameter Name="Name" Type="String" />
        
<asp:Parameter Name="Remark" Type="String" />
    
</InsertParameters>
</asp:ObjectDataSource>

update.aspx
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="ObjectDataSource1" DefaultMode="Edit">
    
<Fields>
        
<asp:TemplateField HeaderText="Id" SortExpression="Id">
            
<EditItemTemplate>
                
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
            
</EditItemTemplate>
        
</asp:TemplateField>
        
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        
<asp:TemplateField HeaderText="remark" SortExpression="remark">
            
<EditItemTemplate>
                
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("remark") %>' Height="109px" TextMode="MultiLine" Width="239px"></asp:TextBox>
            
</EditItemTemplate>
        
</asp:TemplateField>
        
<asp:CommandField ButtonType="Button" ShowEditButton="True" />
    
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    SelectMethod
="GetItem" TypeName="Test.BLL.source" UpdateMethod="Update">
    
<SelectParameters>
        
<asp:QueryStringParameter DefaultValue="0" Name="Id" QueryStringField="id" Type="Int32" />
    
</SelectParameters>
    
<UpdateParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
        
<asp:Parameter Name="Name" Type="String" />
        
<asp:Parameter Name="remark" Type="String" />
    
</UpdateParameters>
</asp:ObjectDataSource>


封装的代码:

DBUtility.csproj

SqlHelper.cs

Code