2009-09-10 70 views
0

私は編集可能なグリッドビューの簡単な例を作成しようとしていますが、何らかの理由で基本が機能していないようです。 「編集」をクリックすると、この例ではラベルバーとテキストボックスが表示されないのはなぜですか?編集可能な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

あなたgv_RowEditing方法にOnRowEditingフック試してみてください。私はあなたがエラーページを取得しないと驚いています。「処理されなかった行方不明イベントRowEditing」のようなものです。

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

更新

私の悪いです。私はC#を想定し、言語のチェックを忘れてしまった。これをあなたの行編集方法に入れれば、編集がうまくいきます。しかし、取り消しと更新のイベントにはもっと多くのことがあります。ここで

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() 

詳細:VBでhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowediting.aspx

+0

、イベントの配線は、自動とすることができる - サブgv_RowEditingはgvRowEditingイベントのでないエラーを処理します。 – chris

+0

この場合、ヘッダーにはAutoEventWireup = falseと表示されますが、まだそれは奇妙です。 – chris

関連する問題