完成這些以后,就來完成表示層了: 新建一個web窗體,取名為Default.aspx. 拖動一個GridView到default.aspx頁面中,用來顯示所有的記錄,在屬性窗口中,把"允許選中行"復(fù)選上,表示,當我們選中某一行時,作相應(yīng)的操作,這里的操作就是指FormView中顯示詳細的記錄.
... <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Style="font-size: 9pt; font-family: 'Courier New'; text-decoration: none" DataSourceID="ObjectDataSource1" AutoGenerateEditButton="True" AutoGenerateDeleteButton="True" DataKeyNames="id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> <!--這里就是允許選中行--> <Columns> <asp:CommandField ShowSelectButton="True" SelectText="Detail"/> </Columns> </asp:GridView>
這里需要書寫代碼了,當然,你也可以用向?qū)瓿?這段代碼用來填充GridView,注意DataSourceID和DataKeyNames屬性,DatakeyNames屬性一般是表的主鍵
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Blog.Entity.LinksEntity" TypeName="Blog.DAL.Links" SelectMethod="getList" UpdateMethod="updateLinks" OnUpdated="ObjectDataSource1_Updated" DeleteMethod="deleteLinks" InsertMethod="insertLinks" ></asp:ObjectDataSource>
ID屬性就不說了,上面的GridView的DataSourceID屬性值就是這里的ID屬性,DataObjectTypeName是指"用于更新、插入或刪除數(shù)據(jù)操作中的參數(shù),而不是從數(shù)據(jù)綁定控件傳遞個別的值(從MSDN上看的)",具體什么意思呢?就是表示在UpdateMethod或Deletemethod事件中,傳遞給相關(guān)方法的參數(shù)不是一個控件的值,而是一個Blog.Entity.LinksEntity類型的值.回到DAL層就明白了吧.
public void updateLinks(Blog.Entity.LinksEntity obj) { ......... } public void deleteLinks(Entity.LinksEntity obj) { ...... } public void insertLinks(Entity.LinksEntity obj) { ..... }
注意參數(shù),如果你不設(shè)定這里的DataObjectTypeName的話,在進行更新操作時會失敗,TypeName是ObjectDataSource控件的另一個重要屬性,意思是你這里的數(shù)據(jù)取自于哪一個類,這里我指定的是Blog.Dal.Links類
namespace Blog.DAL { public class Links .....
與這里是對應(yīng)的,如果寫錯的話,是會報錯的.在這里執(zhí)行一下會看到:
表明綁定成功了,你可以試一下選取/編輯/刪除操作 再來拖動一個FormView控件
<asp:FormView ID="FormView1" runat="server" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="ObjectDataSource2" GridLines="Both" Style="font-size: 9pt; font-family: 'Courier New'; text-decoration: none" Width="348px" DataKeyNames="id"> <FooterStyle BackColor="#99CCCC" ForeColor="#003399" /> <EditRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" /> <EditItemTemplate> ... </EditItemTemplate> <RowStyle BackColor="White" ForeColor="#003399" /> <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" /> <InsertItemTemplate> ... </InsertItemTemplate> <ItemTemplate> ..... </ItemTemplate> <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" /> </asp:FormView>
省略號碼是自動生成的模板,代碼較長,就沒有帖上來了 注意FormView的DataSourceID屬性和DataKeyNames屬性,再來看ObjectDataSource2的代碼
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" DataObjectTypeName="Blog.Entity.LinksEntity" DeleteMethod="deleteLinks" InsertMethod="insertLinks" SelectMethod="getDetail" TypeName="Blog.DAL.Links" UpdateMethod="updateLinks"> <SelectParameters> <asp:Parameter Name="id" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource>
DataObjectTypeName/TypeName就不多說了,DeleteMethod/InsertMethod/SelectMethod/UpdateMethod是指當進行Delete/Insert/Select/Update事件時執(zhí)行的方法,這里分別取自DAL層中的相關(guān)方法名. 注意這里多了一個<selectparameters>,因為我們顯示詳細記錄時,要傳遞一個ID過來
public Blog.Entity.LinksEntity getDetail(int id) { .... }
最后一步,選中GridView控件,屬性窗口中找到SelectedIndexChanged事件,雙擊它,進入.aspx.cs中書寫,在這個事件中,要把ID的值傳到ObjectDataSoruce2中,用于填充ID這個參數(shù)
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { ObjectDataSource2.SelectParameters["id"].DefaultValue = GridView1.SelectedValue.ToString(); form1.DataBind(); GridView1.DataBind(); }
ok,看效果吧
最后,asp.net2.0的數(shù)據(jù)控件給我們帶來了很大的便利,使我們只需要拖動一些控件書寫少量代碼甚至是不需要寫代碼都能讓我們輕而易舉地顯示數(shù)據(jù)表中的記錄.
經(jīng)典論壇討論帖: http://m.95time.cn/bbs/NewsDetail.asp?id=2542192
出處:藍色理想
責任編輯:moby
上一頁 asp.net 2.0之ObjectDataSourc控件 [1] 下一頁
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|