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

标签 c# asp.net parameters textbox objectdatasource

我已经配置了一个 GridView 以通过 ObjectDataSource 填充数据。此 ObjectDataSource 只需要一个绑定(bind)到 DropDownList 的参数。这一切都很好。

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

现在,我想增强功能并在 DropDownList 旁边添加一个 TextBoxButton。我想让我的用户选择从 DropDownList 中选择一个值,或者在 TextBox 中键入它并按 ENTER 键更新 GridView.

知道怎么做吗?

我试过 dataSource.Selecting 事件。但它没有按照我想要的方式工作。 请帮忙

最佳答案

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

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

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

<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>

代码隐藏:

    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();
    }

事后编辑

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

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

关于c# - asp.net objectdatasource 从控件和文本框传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214230/

相关文章:

使用 WHERE IN 的 C# Dapper 查询

c# - 如果用户未通过身份验证,请转到登录页面

c# - session 变量在不同浏览器之间共享吗?

ASP.Net session 超时检测 : Is Session. IsNewSession 和 SessionCookie 检测是执行此操作的最佳方法吗?

angular - 如何在 Angular 中使用不同的参数更新相同的组件

python - python中的字符串只接受字母数字字符和下划线

c# - CloudTable 异步执行查询

c# - 在不定义新 xmlns 的情况下访问 XAML 命名空间的子命名空间

parameters - Go 如何查看产品类型

c# - 向任何自定义控件添加命令属性