asp.net objectdatasource从控件和文本框传递参数

She*_*ezi 5 c# asp.net parameters textbox objectdatasource

我已经配置了a GridView来填充数据ObjectDataSource.这只ObjectDataSource需要一个绑定到a的参数DropDownList.这一切都运作良好.

当我加载页面时,它会填充DropDownList并且显示的任何字段都将DropDownList作为参数传递给ObjectDataSource进一步填充的页面GridView.

现在,我想要增强功能,并且有一个TextBoxButton旁边这个DropDownList.我想给我的用户选择一个值,或者选择一个值DropDownList,或者输入TextBox和输入更新GridView.

知道怎么做吗?

我尝试了一下dataSource.Selecting活动.但它没有像我想要的那样工作.请帮忙

TBo*_*jnr 2

这是一个粗略的示例,但基本上您可以做的是创建会话参数或类似的参数,而不是创建控制参数:

因此,当您单击输入时,它将使用文本框值,或者当您更改下拉列表时,它将使用下拉列表的值。

您还可以使用单选按钮,让用户可以选择指定他想要的值。

<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" 
        onselectedindexchanged="ddl_SelectedIndexChanged"></asp:DropDownList>
        <asp:TextBox ID="txt" runat="server"></asp:TextBox>

        <asp:Button runat="server" Text="ClickMe" ID="btnOne" OnClick="btnOne_Click"/>

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
        <SelectParameters>
            <asp:SessionParameter SessionField="ObjectParameterName" />
        </SelectParameters>
    </asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)

背后代码:

    protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        var ddl = (DropDownList)sender;
        Session["ObjectParameterName"] = ddl.SelectedValue;
        ObjectDataSource1.Select();
    }

    protected void btnOne_Click(object sender, EventArgs e)
    {
        var ddl = (DropDownList)sender;
        Session["ObjectParameterName"] = txt.Text;
        ObjectDataSource1.Select();
    }
Run Code Online (Sandbox Code Playgroud)

事后编辑

您还可以不将参数分配给会话字段,而是直接设置对象数据源的参数(禁止异常处理)。

    protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        var ddl = (DropDownList)sender;
        ObjectDataSource1.SelectParameters.Add(new Parameter() {Name="Name",DefaultValue=ddl.SelectedValue });
    }
Run Code Online (Sandbox Code Playgroud)