2015-01-05 5 views
2

Я искал ответ здесь, в SO, но я не смог его найти.Как избежать режима редактирования в режиме сетки?

У меня есть GridView, как этот:

<asp:GridView ID="gdvSubEventos" AutoGenerateColumns="False" runat="server"> 
    <Columns> 
     <asp:BoundField HeaderText="Descrição" DataField="Descricao"> 
     </asp:BoundField> 
     <asp:BoundField HeaderText="Data" DataField="data" DataFormatString="{0:dd/MM/yyyy}"> 
     </asp:BoundField> 
     <asp:CommandField HeaderText="Opção" EditText="Editar" ShowEditButton="true"> 
     </asp:CommandField> 
    </Columns> 
</asp:GridView> 

Если пользователь нажмет на редактирование, открывается другая форма (выше сетки, в одной и той же странице) для редактирования.

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

Как я могу всегда избегать режима редактирования на gridviews?

+0

открывает форму на той же странице, что означает внутри панели обновления? это позволит избежать обновления страницы. Как насчет столбца гиперссылки? делает ли он такое же поведение? – Jaya

+0

Он просто имеет форму над сеткой и, когда пользователь нажимает на редактирование, форма заполняется и настраивается на видимое событие редактирования строки. Можете ли вы привести мне пример с гиперссылкой, я не очень-то знаю об этом. :) –

+0

Конечно. Мое первое предложение было бы использовать панель обновления, которая позволяет частично обновлять. В вашем случае покажите форму без отправки. Его простой и понятный, вот ссылка http://msdn.microsoft.com/en-us/library/bb399001(v=vs.100).aspx. Второй вариант - изменить тип столбца на , это полезно, если вы откроете форму на новой странице, и это не то, что вы хотели бы сделать, я верю. – Jaya

ответ

2

Если вы используете кнопку, указанную в поле команды, вы вызовете возможность редактирования gridview, и gridview ожидает, что вы будете использовать встроенное редактирование. Не вдаваясь в подробности, все, что вам нужно сделать в нижней части RowEditEvent, установлено в gdvSubEventos.EditIndex = -1, это должно вывести сетку из режима редактирования.

Чтобы избежать GridView из когда-либо ввода в режим редактирования на всех - отключить редактирование в поле команды затем добавить кнопку редактирования, чтобы открыть свою собственную форму:

  1. Добавить <asp:ButtonField> в список столбцов
  2. Преобразуйте его в поле шаблона.

В случае GridView RowDataBound

  1. Найти кнопки управления
  2. Связать это Имя_команды к чему-то вроде «MyEdit»
  3. Присвоить это CommandArgument индекс строки, так что вы знаете, какая строка была выбрана.

Когда вы выберете эту кнопку, она вызовет CommandEvent кнопки, а не GridView, поэтому вам понадобится ссылка индекса строки, чтобы захватить нужные данные из Gridview, чтобы заполнить ваши поля.

+0

Большое спасибо за оба предложения. Я буду использовать первый сейчас (gdvSubEventos.EditIndex = -1), но спасибо за объяснение в том, как я тоже спросил. :) –

Смежные вопросы