2015-01-05 18 views
2

我在這裏搜索了一個答案,但我找不到一個答案。如何避免gridview上的編輯模式?

我有這樣一個一個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中的行變爲可編輯。

我該如何總是避免gridview上的編輯模式?

+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退出編輯模式。

爲了避免在GridView從不斷進入編輯模式在所有 - 在命令字段禁用編輯然後 添加編輯按鈕,彈出自己的方式:

  1. 添加<asp:ButtonField>到列列表
  2. 將其轉換爲模板字段。

在GridView的RowDataBound事件

  1. 尋找按鈕控制
  2. 指定它的CommandName爲類似「myedit在」
  3. 指定它的CommandArgument行索引,所以你知道選擇哪一行。

當你選擇這個按鈕時,它會觸發按鈕的CommandEvent,而不是GridView,所以你需要行索引引用來從Gridview抓取你需要的數據來填充你的字段。

+0

非常感謝這兩個建議。我現在將使用第一個(gdvSubEventos.EditIndex = -1),但感謝我以我問的方式解釋。 :) –

相關問題