我已经配置了一个 GridView
以通过 ObjectDataSource
填充数据。此 ObjectDataSource
只需要一个绑定(bind)到 DropDownList
的参数。这一切都很好。
当我加载页面时,它填充 DropDownList
并且此 DropDownList
中显示的任何字段都作为参数传递给 ObjectDataSource
进一步填充 GridView
。
现在,我想增强功能并在 DropDownList
旁边添加一个 TextBox
和 Button
。我想让我的用户选择从 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/