【问题标题】:Editable gridview - what are the basics?可编辑的gridview - 什么是基础?
【发布时间】:2009-09-10 15:44:40
【问题描述】:

我正在尝试创建一个可编辑网格视图的简单示例,但由于某种原因似乎无法让基础工作正常进行。为什么当我点击“编辑”时这个例子没有显示标签栏和文本框?

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

【问题讨论】:

    标签: asp.net vb.net gridview


    【解决方案1】:

    尝试将 OnRowEditing 连接到您的 gv_RowEditing 方法。我很惊讶您没有收到错误页面,例如“未处理的触发事件 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()
    

    更多详情:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowediting.aspx

    【讨论】:

    • 在vb中,事件连接可以是自动的——子gv_RowEditing处理gvRowEditing事件,所以不会出错。
    • 虽然在这种情况下,标题显示 AutoEventWireup=false 但它仍然这样做 - 奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2014-10-15
    相关资源
    最近更新 更多