asp.net objectdatasource передает параметр из элемента управления, а также из текстового поля - PullRequest
5 голосов
/ 02 июня 2011

Я настроил GridView для заполнения данных на ObjectDataSource.Для этого ObjectDataSource требуется только один параметр, связанный с DropDownList.Это все работает хорошо.

Когда я загружаю страницу, она заполняет DropDownList, и любое поле, отображаемое в этом DropDownList, передается в качестве параметра в ObjectDataSource, который дополнительно заполняет GridView.

Теперь я хочу улучшить функциональность и иметь рядом с этим DropDownList TextBox и Button.Я хочу дать своему пользователю возможность либо выбрать значение из DropDownList, либо набрать его в TextBox и нажать ENTER, чтобы обновить GridView.

Есть идеи, как это сделать?

Я пробовал dataSource.Selecting событие.но это не работает так, как я хочу.пожалуйста помогите

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Это грубый пример, но в основном вы можете вместо создания контрольного параметра создать параметр сеанса или что-то подобное:

Таким образом, когда вы нажимаете ввод, он будет использовать значение текстового поля или при изменении раскрывающегося списка он будет использовать значение раскрывающегося списка.

Вы также можете включить переключатель, дающий пользователю возможность указать, откуда он хочет получить значение.

<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 голос
/ 02 июня 2011

Существует метод SelectParameters.Add, который принимает имя столбца и значение в качестве параметра для передачи значения параметра.

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