【问题标题】:asp.net objectdatasource pass parameter from control as well as textboxasp.net objectdatasource 从控件和文本框传递参数
【发布时间】:2011-06-02 12:00:36
【问题描述】:

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

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

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

知道怎么做吗?

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

【问题讨论】:

  • 参数总是相同的?

标签: c# asp.net parameters textbox objectdatasource


【解决方案1】:

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

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

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

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

事后编辑

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

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

【讨论】:

  • 谢谢 TBohnen,我实际上所做的是使用了您的逻辑并得到了这个想法,我添加了 dropdownlist_selectedindexchanged 事件......每当触发事件时,我都会从 dropdownlist.selectedvalue 中获取参数值。 .如果单击该按钮,我将使用Muhammad Akhtar给出的代码。我缺少的是在添加新参数之前我没有清除selectParameter的值....但是,我解决了我的问题。 ...非常感谢
【解决方案2】:

SelectParameters.Add方法,将ColumnName和value作为参数传入参数值。

protected void btn_Click(object sender, EventArgs e)
{
  ods.SelectParameters.Clear();
  ods.SelectParameters.Add("ColumnName", SetparameterValue);
}

【讨论】:

  • 谢谢 Akhtar bhai,我实际上使用了您的代码,并添加了 dropdownlist_selectedindexchanged 事件……每当触发事件时,我都会从 dropdownlist.selectedvalue 中获取参数值……如果单击按钮,我使用了您的代码...非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 2011-02-12
  • 1970-01-01
  • 2018-12-15
  • 2014-05-25
相关资源
最近更新 更多