Связанный с данными выпадающий список - начальное значение

в первую очередь: насколько я знаю, что размещение диалогового окна внутри табуляции является плохой практикой ... вам лучше вытащить его ...

и теперь на ваш вопрос:

извините, мне потребовалось некоторое время, чтобы получить то, что именно вы хотели реализовать,

сделал это сейчас в моем веб-приложении, и он работает

, как я уже говорил, : диалоговое окно `p: tabView,

покидает диалог p:, как вы первоначально предположили:

<p:dialog modal="true" widgetVar="dlg">
    <h:panelGrid id="display">
        <h:outputText value="Name:" />
        <h:outputText value="#{instrumentBean.selectedInstrument.name}" />
    </h:panelGrid>
</p:dialog>   

, а командная ссылка p: должна выглядеть так (все, что я сделал это изменить атрибут обновления)

<p:commandLink update="display" oncomplete="dlg.show()">
    <f:setPropertyActionListener value="#{lndInstrument}" 
        target="#{instrumentBean.selectedInstrument}" />
    <h:outputText value="#{lndInstrument.name}" />
</p:commandLink>  

то же самое работает в моем веб-приложении, и если это не сработает для вас, то я думаю, что что-то не так в вашем java-компоненте ...

28
задан mmcglynn 6 February 2009 в 17:58
поделиться

5 ответов

Я думаю, что Вы хотите сделать, это:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="--Select One--" Value="" />   
</asp:DropDownList>

Удостоверяются, что 'AppendDataBoundItems' установлен на верный , или иначе Вы очиститесь '-Выбор Один -' элемент списка при привязке данных.

, Если у Вас есть свойство 'AutoPostBack' набора выпадающего списка к верный , необходимо будет также установить свойство 'CausesValidation' на верный , затем используют 'RequiredFieldValidator' для проверки '-Выбор Один -' опция не вызывает обратную передачу.

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
64
ответ дан Phaedrus 14 October 2019 в 09:51
поделиться

То, что я делаю, установлено текстовое свойство выпадающего списка ПОСЛЕ ТОГО, КАК я связываю с данными его. Что-то вроде этого:

   protected void LoadPersonComboBox()
    {
        var p = new PeopleBLL();

        rcmbboxEditPerson.DataSource = p.GetPeople();
        rcmbboxEditPerson.DataBind();
        rcmbboxEditPerson.Text = "Please select an existing person to edit...";
    }

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

2
ответ дан GregD 14 October 2019 в 09:51
поделиться

Добавьте объект и установите его свойство "Selected" на истинный, Вы, вероятно, захотите установить "appenddatabounditems" свойство на истинный также, таким образом, Ваше начальное значение не будет удалено при привязке данных.

, Если Вы говорите об устанавливании начального значения, которое находится в Ваших связанных с данными объектах затем, сцепляются в Ваше ondatabound событие и устанавливают, какой индекс Вы хотите к selected=true, Вы захотите перенести его в "если не page.isPostBack затем...." хотя

Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As    System.EventArgs) Handles DepartmentDropDownList.DataBound
    If Not Page.IsPostBack Then
        DepartmentDropDownList.SelectedValue = "somevalue"
    End If
End Sub
0
ответ дан Element 14 October 2019 в 09:51
поделиться

Я знаю, что у этого уже есть выбранный ответ, но я хотел бросить свои два цента. У меня есть раскрывающийся список привязки данных:

<asp:DropDownList 
  id="country" 
  runat="server" 
  CssClass="selectOne" 
  DataSourceID="country_code" 
  DataTextField="Name" 
  DataValueField="CountryCode_PK"
></asp:DropDownList>
<asp:SqlDataSource 
  id="country_code" 
  runat="server" 
  ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
  SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK"
></asp:SqlDataSource>

В коде позади у меня есть это - (который по умолчанию выбирает Соединенные Штаты):

if (this.IsPostBack)
{
  //handle posted data
}
else 
{
  country.SelectedValue = "US";
}

Сначала страница загружается на основе значения 'US', а не пытается беспокоиться о selectedIndex ( что, если в таблицу данных добавлен еще один элемент - я не хочу перекодировать)

2
ответ дан 28 November 2019 в 02:34
поделиться

Я знаю, что это устарело, но сочетание этих идей приводит к очень элегантному решению:

Сохраните все настройки свойств по умолчанию для DropDownList (AppendDataBoundItems = false, элементы пустые). Затем обработайте событие DataBound следующим образом:

protected void dropdown_DataBound(object sender, EventArgs e)
{
    DropDownList list = sender as DropDownList;
    if (list != null)
        list.Items.Insert(0, "--Select One--");
}

Изюминкой является то, что этот единственный обработчик может использоваться любым количеством объектов DropDownList или даже помещаться в универсальную служебную библиотеку для всех ваших проектов.

11
ответ дан 28 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: