Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пользовательский элемент управления ASP.NET как параметр FilterParameter

Автор вопроса: StevenОтветов: 3

При добавлении параметров предложения WHERE в источник данных вы можете указать существующий элемент управления формы (текстовое поле, раскрывающийся список и т. Д.), Выбрав "Источник: элемент управления", а затем выбрав "ControlID" в следующем раскрывающемся списке.

Есть ли способ настроить пользовательский элемент управления так, чтобы он отображался в списке элементов управления?

OR

Как я могу использовать свойство пользовательского элемента управления в качестве параметра запроса?

user-controls

Ответы

Ответ 1 · рейтинг 2 · Vivek Athalye

Я не уверен, что вы можете сделать это с System.Web.UI.UserControl, но я смог сделать это с System.Web.UI.WebControls.WebControl.

Вы должны отметить свой класс WebControl как [ControlValueProperty("PropertyName")].

PropertyName - это имя свойства, значение которого будет использоваться в предложении where. Например, в случае TextBox это "Text", в случае DropDownList - "SelectedValue".

Я пробовал сделать это с помощью UserControl, но не смог заставить его работать, дам вам знать, если найду решение.

Ответ 2 · Daniel Dyson

Ваш элемент управления должен будет реализовать интерфейс IPostBackDataHandler, чтобы он мог "сообщать" выбранный индекс или значение серверу, когда ваша страница отправляет ответ. Интерфейс реализован как TextBox, так и DropDownList. Я не уверен, использует ли Visual Studio diaolg его, чтобы определить, отображать ли его в списке элементов управления, но попробовать стоит. Я все еще изучаю, как это работает, но я подумал, что опубликую это, чтобы вы разобрались с этим.

Ответ 3 · Raj Kaimal

Вы можете создать собственные параметры, например http://fredrik.nsquared2.com/viewpost.aspx?PostID=355

но может быть проще сделать следующее:

Мы добавляем событие выбора в источник данных, которое будет извлекать общедоступное свойство из пользовательского элемента управления и устанавливать его в качестве параметра. Открытое свойство пользовательского элемента управления извлекает значение некоторого веб-элемента управления, например текстового поля, и представляет его как свойство.

Учитывая следующий SqlDataSource

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource"
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

 </asp:sqlDataSource>

Мы добавляем событие выбора вот так

protected void EmployeeDetailsSqlDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["@EmpID"].Value = MyUserControl.EmpID;
}

UserControl имеет такое свойство:

public int EmployeeID {
  get {
      return Convert.ToInt32(TextBox1.Text);
  }
}

Где TextBox1 - это место, где пользователь вводит идентификатор сотрудника. Вы также можете использовать ViewState для хранения свойства EmployeeId на тот случай, если вы хотите сохранить его при обратной передаче (в зависимости от вашего сценария).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы