开发者

asp.net objectdatasource pass parameter from control as well as textbox

I have configured a GridView to fill data by an ObjectDataSource. This ObjectDataSource requires only one parameter which is bound to a DropDownList. This all works well.

When i load the page, it fills the DropDownList and whatever field is displayed in this DropDownListis passed as a parameter to the ObjectDataSource which further fills the GridView.

Now, i want to enhance the functionality and have a TextBox and Button next to this DropDownList. I want to give my user the option to either select a value from the DropDownList, OR TYPE IT IN THE 开发者_开发问答TextBox AND PRESS ENTER TO UPDATE THE GridView.

Any idea how to do it?

I have tried dataSource.Selecting event. but it isn't working the way i want it to be. please help


This is a rough sample but basically what you can do is instead of creating a control parameter you can create a session parameter or something similar:

So when you click enter it will use the textbox value or when you change the dropdownlist it will use the dropdownlist's value.

You can also have radio button's giving the user the option to specify from where he want's the value.

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

Code Behind:

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

EDIT AFTERTHOUGHT

You can also instead of assigning the parameter to a session field, just set the objectdatasource's parameter directly (Barring Exception handling).

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


There is the SelectParameters.Add method which takes the ColumnName and value as a parameter to pass in the parameter value.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜