Валидатор для списка в asp.net - PullRequest
3 голосов
/ 21 октября 2011
<asp:ListBox ID="lst_newGrpMembers" 
             DataValueField="Name" 
             SelectionMode="Multiple"
             Width="120px" 
             ToolTip="Press ctrl to select multiple users" 
             runat="server">
</asp:ListBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
                            runat="server" 
                            ControlToValidate="lst_newGrpMembers"
                            ErrorMessage="Atleast one member required" 
                            CssClass="Error" 
                            Text="*Atleast one member required"
                            ValidationGroup="CreateGroupValidationGroup">
</asp:RequiredFieldValidator>

У меня есть обязательный валидатор поля для списка, он проверяет и показывает ошибку, когда в списке нет записи, но когда я добавляю элемент в список, он все равно показывает ошибку. Когда я выбираю элемент списка, который я добавил, и нажимаю «Отправить», он работает нормально. Как проверить список.

Ответы [ 3 ]

10 голосов
/ 21 октября 2011

На RequiredFieldValidator попробуйте установить InitialValue в пустую строку:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"          
    InitialValue=""
    ControlToValidate="lst_newGrpMembers" 
    ErrorMessage="Atleast one member required"  
    CssClass="Error"  
    Text="*Atleast one member required" 
    ValidationGroup="CreateGroupValidationGroup"> 
</asp:RequiredFieldValidator> 
0 голосов
/ 21 октября 2011

Проблема в том, что он проверяет, существует ли значение SELECTED в ListBox.Когда вы публикуете его, возможно, вы получите только выбранное значение для ListBox.Когда вы добавляете элементы в ListBox, установите для свойства SELECTED значение true и отключите ListBox, чтобы избежать отмены выбора.

Например:

    ListItem myItem = new ListItem();
    myItem.Text = TextBox1.Text;
    myItem.Selected = true;
    ListBox1.Items.Add(myItem);

Надеюсь, это поможет.

0 голосов
/ 21 октября 2011

Содержимое списка не отправляется на сервер, только выбранный элемент. Это способ работы форм в HTTP. Выберите свой элемент после добавления или поместите его в скрытое поле формы (с помощью скрипта), чтобы отправить на сервер.

Существуют различные способы сделать это с помощью сценария. Я нашел этот контроль (хотя я не использовал его), который я считаю, делает это для вас: http://www.metabuilders.com/Tools/DynamicListBox.aspx

Это также рассматривается более подробно здесь: http://forums.asp.net/t/1687079.aspx/1 где они выбирают элементы при обратной передаче с помощью jQuery:


function save() {
$("#lstFiles").each(function () {
      $("#lstFiles option").attr("selected", "selected");
});
return true;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...