如何动态修改ObjectDataSource数据源的查询参数

最近在使用LINQ过程中,经常和ObjectDataSource打交道。有时需要动态改变一个ObjectDataSource的查询方法或者查询参数。

例如:我的产品库存可以根据产品类型的下拉列表过滤,也可以根据产品编码直接查询。

查询方法:GetInventoryView

调用参数:productcode,orderby。其中productcode绑定到产品类型的下拉列表。

当用户输入产品编码进行查询时,需要将productcode参数的值设置为用户输入到TextBoxFindCode中的编码。

在程序中需要清除ObjectDataSource原有的SelectParameters,然后再重新插入新的参数SelectParameter,设置productcode参数。

aspx

    <asp:ObjectDataSource ID="ObjectDataSource_Inventory" runat="server"
        SelectMethod="GetInventoryView" TypeName="InventoryBL">
        <SelectParameters>
            <asp:ControlParameter ControlID="DrpProductTypeList" DefaultValue=""
                Name="productcode" PropertyName="SelectedValue" Type="String" />
            <asp:Parameter DefaultValue="ProductCode" Name="orderby" Type="String" />
        </SelectParameters>
    </asp:ObjectDataSource>

cs

protected void ButtonFind_Click(object sender, EventArgs e)
    {

        //复制SelectParameters
        Parameter sorting = ObjectDataSource_Inventory.SelectParameters["orderby"];
        Parameter code = new Parameter("productcode",ObjectDataSource_Inventory.SelectParameters["productcode"].Type,this.TextBoxFindCode.Text.Trim());

        //清除原有的SelectParameter
        ObjectDataSource_Inventory.SelectParameters.Clear();

        //重新加入新的SelectParameter

       ObjectDataSource_Inventory.SelectParameters.Add(code);
        ObjectDataSource_Inventory.SelectParameters.Add(sorting);
        GridViewInventory.DataBind();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值