我已配置GridView
以ObjectDataSource
填充数据。此ObjectDataSource
只需要一个绑定到DropDownList
的参数。这一切都运作良好。
当我加载页面时,它会填充DropDownList
,此DropDownList
中显示的任何字段都会作为参数传递给ObjectDataSource
,这会进一步填充GridView
现在,我想要增强功能,并在此TextBox
旁边设置Button
和DropDownList
。我想让我的用户选择从DropDownList
中选择一个值,或者在TextBox
中选择一个值,然后输入以更新GridView
。
知道该怎么做吗?
我尝试了dataSource.Selecting
事件。但它没有像我想要的那样工作。
请帮忙
答案 0 :(得分: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>
代码背后:
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();
}
编辑后
您也可以代替将参数分配给会话字段,只需直接设置objectdatasource的参数(禁止异常处理)。
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
var ddl = (DropDownList)sender;
ObjectDataSource1.SelectParameters.Add(new Parameter() {Name="Name",DefaultValue=ddl.SelectedValue });
}
答案 1 :(得分:1)
有SelectParameters.Add
方法,它将ColumnName和value作为参数传递给参数值。
protected void btn_Click(object sender, EventArgs e)
{
ods.SelectParameters.Clear();
ods.SelectParameters.Add("ColumnName", SetparameterValue);
}