2009-09-10 63 views
0

我試圖創建一個可編輯的GridView的簡單示例,並出於某種原因似乎無法獲得基本工作。爲什麼當我點擊「編輯」時,這個例子不顯示標籤欄和文本框?可編輯的gridview - 什麼是基礎?

ASPX:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="gv.aspx.vb" Inherits="WebRoot.gv" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:GridView ID="gv" runat="server" AutoGenerateEditButton="true" AutoGenerateColumns="false"> 
     <Columns> 
     <asp:TemplateField HeaderText="Foo"> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text="Foo" /> 
       <asp:Label ID="lblQuarter" runat="server" Text='<%# Eval("fooVal") %>' /> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:Label ID="lblQuarter" runat="server" Text='Bar' /> 
       <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("fooVal") %>'></asp:TextBox> 
      </EditItemTemplate> 
     </asp:TemplateField> 
    </Columns> 

後面的代碼:

Public Class MyFoo 
    Public ReadOnly Property FooVal() As String 
     Get 
     Return _val 
     End Get 
    End Property 
    Private _val As String = String.Empty 
    Public Sub New(ByVal val As String) 
     _val = val 
    End Sub 
End Class 
Partial Public Class gv 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim l As New List(Of MyFoo) 
     l.Add(New MyFoo("first")) 
     l.Add(New MyFoo("second")) 

     gv.DataSource = l 
     gv.DataBind() 
    End Sub 


    Private Sub gv_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gv.RowEditing 
     Dim x As String 
     x = "foo" 
    End Sub 
End Class 

回答

0

嘗試掛鉤OnRowEditing您gv_RowEditing方法。我很驚訝你沒有得到一個錯誤頁面,就像「被解僱的事件RowEditing沒有被處理」。

<asp:GridView ID="gv" OnRowEditing="gv_RowEditing" ... 

更新

我的壞。我假定c#並且忘記檢查語言。把它放在你的rowediting方法中,編輯就可以工作。但是取消和更新活動還有更多的事情要做。

gv.EditIndex = e.NewEditIndex 
    Dim l As New List(Of MyFoo) 
    l.Add(New MyFoo("first")) 
    l.Add(New MyFoo("second")) 
    gv.DataSource = l 
    gv.DataBind() 

更多細節在這裏:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowediting.aspx

+0

在VB中,事件佈線均可自動 - 子gv_RowEditing處理gvRowEditing事件,所以沒有錯誤。 – chris 2009-09-10 17:30:33

+0

雖然在這種情況下,標題說AutoEventWireup = false,但它仍然會 - 它很奇怪。 – chris 2009-09-10 17:31:29