Проверка элементов управления в ListView вставки / редактирования шаблонов - PullRequest
1 голос
/ 29 октября 2010

Я добавил RequiredFieldValidator в свой InsertItemTemplate, и, похоже, он работает нормально. Однако проблема, с которой я столкнулся, заключается в том, что теперь я не могу ничего делать в ListView (например, редактировать или удалять элементы), ЕСЛИ ОБЯЗАТЕЛЬНОЕ поле не имеет значения. Есть ли способ, которым я могу вручную выполнить проверку, когда пользователь нажимает кнопку «Вставить» на InsertItemTemplate, или какой-то другой маленький трюк, который я могу выполнить, чтобы пользователю не приходилось сначала вводить значение, просто чтобы удалить что-то еще список?

Спасибо

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

А_Наблси,

Пожалуйста, предоставьте код для вашего решения, чтобы отключить элементы проверки «Вставка нового» в режиме «Редактирование / обновление» или отключить элементы управления «Редактирование / обновление», когда одновременно активны и «Редактировать», и «Вставить строки». Этот код, использующий ваше условное решение, завершается ошибкой с пустой ссылкой на updateButton.

LinkButton updateButton = LVTasks.EditItem.FindControl("UpdateButtonTask") as LinkButton;
updateButton.CausesValidation = false;

Работающее решение добавляет Группы проверки .

Включите ValidationGroup = "myVGEdit" с вашими элементами управления Validator в EditItemTemplate и кнопкой "Обновить".

Включите ValidationGroup = "myVGInsert" с вашими элементами управления Validator в шаблоне InsertItemTemplate и кнопкой Вставить.

<asp:ListView ID="LVTasks" runat="server" 
    DataKeyNames="IDTask" 
    DataSourceID="LDS_LVTasks" 

    InsertItemPosition="FirstItem" 

    oniteminserting="LVTasks_ItemInserting" 
    onitemupdating="LVTasks_ItemUpdating" 
    onitemcommand="LVTasks_ItemCommand"  
    >

    <EditItemTemplate> 
       <asp:TextBox ID="TaskUpdateTextBox" runat="server" 
            Text='<%# Bind("Task") %>' 
            TextMode="MultiLine" Rows="1" Font-Bold="true" Width="300px"
        />

       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
            ErrorMessage="Please Set Task title"
            ControlToValidate="TaskUpdateTextBox"

            ValidationGroup="myVGUpdate"
        />

                <asp:LinkButton ID="UpdateCancelButton" runat="server" 
                CommandArgument='<%#Eval("IDTask") %>' 
                CommandName="Cancel" 
                CausesValidation="False"          
                ToolTip="Cancel - Abort - No Changes"><div class="Cancel"></div></asp:LinkButton>

                <asp:LinkButton ID="UpdateButtonTask" runat="server" 
                CommandArgument='<%#Eval("IDTask") %>' 
                CommandName="Update" 

                CausesValidation="True"

                ValidationGroup="myVGEdit"

                ToolTip="Save Changes - Update"><div class="Update" ></div></asp:LinkButton>
    </EditItemTemplate> 

    <InsertItemTemplate>
       <asp:TextBox ID="TaskInsertTextBox" runat="server" Text='<%# Bind("Task") %>' 
            TextMode="MultiLine" Rows="1" Font-Bold="true" Width="300px"
        />

       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
            ErrorMessage="Please Set Task title"
            ControlToValidate="TaskInsertTextBox"

            ValidationGroup="myVGInsert"
        />

       <asp:LinkButton ID="CancelButton" runat="server" 
                    CommandArgument='<%#Eval("IDTask") %>' 
                    CommandName="Cancel" 
                    CausesValidation="False"><div class="Clear" ></div></asp:LinkButton>

                <asp:LinkButton ID="InsertButtonTask" runat="server" 
                    CommandArgument='<%#Eval("IDTask") %>' 
                    CommandName="Insert" 
                    CausesValidation="true"

                    ValidationGroup="myVGInsert"

                    ><div class="Insert" ></div></asp:LinkButton>

    </InsertItemTemplate>
3 голосов
/ 29 октября 2010

Да, установите для свойства CausesValidation значение false для элементов управления, которые не должны запускать проверку.

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