现在的位置: 首页 > 综合 > 正文

ObjectDataSourc用法之二(過濾)

2012年03月29日 ⁄ 综合 ⁄ 共 2241字 ⁄ 字号 评论关闭

ObjectDataSourc用法之二(過濾)

1.       准備條件

參數:ObjectDataSource用法之一(SelectMethod來進行簡單的邦定)

2.       在業務處理類中添加如下方法

public DataSet FilterItems()

{

    System.Xml.XmlTextReader xr = new XmlTextReader(_path);

    DataSet ds = new DataSet();

    ds.ReadXml(xr);

    return ds;

}

3.       在aspx頁面中添加內容

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"

    SelectMethod="FilterItems" FilterExpression="UID='{0}' or Email='{1}'" TypeName="Member">

    <FilterParameters>

        <asp:Parameter Name="UID" DefaultValue="bruce" />

        <asp:FormParameter Name="Email" FormField="txtEmail" DefaultValue="maxlimin@maxense.com" />

    </FilterParameters>

</asp:ObjectDataSource>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

    DataSourceID="ObjectDataSource1">

    <Columns>

        <asp:BoundField DataField="UID" HeaderText="UID" SortExpression="UID" />

        <asp:BoundField DataField="PWD" HeaderText="PWD" SortExpression="PWD" />

        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />

    </Columns>

</asp:GridView>

         說明:SelectMethod這個方法就不用說了; FilterExpression的值為一個查詢表達式,格式如:

屬性 表達式 格式化字符串

屬性為SelectMethod返回結果集中的對應的欄位名稱(我們可以解成在表的字段名稱或對象的屬性)…

表達式為=、>=、<=、!=等等

格式化之符串為{0}、{1}、{2}等

多個表過式之前使用and 或 or 來過行連接……其實說白了就跟SQL語句一樣

至於這裏面的{0}、{1}、{2}的值怎麼來的呢……我們可以通過FilterParameters來進行指定,註意上面的asp: FormParameter的作用是表示將這個輸入參數與指定的表單進行邦定,如上我就是將電子郵件這個欄位與一個TextBox進行邦定了,那麼只要將這個TextBox的值改變時就是重新進行篩選了…當然我們還可以通過後端代碼來進行邦定了如下

ObjectDataSource1.FilterParameters.Clear();

ObjectDataSource1.FilterParameters.Add("UID", "henry");

ObjectDataSource1.FilterParameters.Add("Email", "maxlimin@maxense.com");

這裏有一點需要註冊的就是,如我將上面的代碼改改

ObjectDataSource1.FilterParameters.Clear();

ObjectDataSource1.FilterParameters.Add("", "henry");

ObjectDataSource1.FilterParameters.Add("", "maxlimin@maxense.com");

所得到的結果都是一樣了,這裏只認順序不認名稱的,也就是說{0}對應的就是集合中的第一個參數{1}對應的就是集合中的第二個參數了……所以說上面的

<FilterParameters>

        <asp:Parameter Name="UID" DefaultValue="bruce" />

        <asp:FormParameter Name="Email" FormField="txtEmail" DefaultValue="maxlimin@maxense.com" />

    </FilterParameters>

這個代碼,我們也要註冊它的順序了,切記不可將順序搞混了……

這裏需要重點提一下的就是:當我們為ObjectDataSource使用了FilterExpression參數時,那麼SelectMethod參數所對應的方法的返回結果必須是DataSet或者是DataTable. 還有一點就是過濾的意思就是在DataSet或DataTable邦定到GridView時按欄位進行篩選顯示,並不是數據層次的篩選而是內存中的篩選了……

抱歉!评论已关闭.