我们正在使用带有 VB.Net 代码隐藏文件的 ASP.Net DetailsView。我们试图通过允许用户单击“编辑”按钮然后单击“更新”按钮来允许用户在 DetailsView 中编辑和保存更改。
当用户单击 Edit 按钮时没有任何反应,因此我们为 Edit 按钮添加了 OnClick 处理程序。DetailsView 将进入编辑模式,但前提是用户单击 Edit 按钮两次。(也许是一个 ASP.Net 错误?)
一旦 DetailsView 处于编辑模式,Update 和 Cancel 按钮就会按预期显示,但是当用户单击其中任何一个按钮时都不会发生任何事情。我们在 Update 按钮上放置了一个 OnClick,试图强制 DetailsView 更新,但 .ChangeMode(DetailsViewMode.) 的唯一选择是 Edit、Insert、ReadOnly。
我还认为 DetailsViews 不需要额外的 OnClick,除非我们需要执行特殊处理。
这是 DetailsView 的标记:
<asp:DetailsView
ID="DetailsView"
runat="server"
Height="50px"
Width="218px" AutoGenerateRows="False">
<Fields>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:Button ID="ButtonUpdate" runat="server" CausesValidation="True"
CommandName="Update" Text="Update" OnClick="ButtonUpdate_Click" />
<asp:Button ID="ButtonCancelUpdate" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
<ItemTemplate>
<asp:Button ID="ButtonEdit" runat="server" CausesValidation="False"
CommandName="Edit" Text="Edit" OnClick="ButtonEdit_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Forename" HeaderText="First Name:" />
</Fields>
</asp:DetailsView>
这是代码隐藏文件中的编码:
Public Class StudentDetailsMaintenance
Inherits System.Web.UI.Page
Dim theTableAdapter As New DataSetSingleStudentTableAdapters.StudentsMaintenanceTableAdapter
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Load the data from the database into the DetailsView.
'------------------------------------------------------
DetailsView.DataSource = theTableAdapter.GetDataByStudentID(StudentMaintenance.IntStudentID)
DetailsView.DataBind()
End Sub
Protected Sub ButtonEdit_Click(sender As Object, e As EventArgs)
' Place the DetailsView into Edit mode.
'--------------------------------------
DetailsView.ChangeMode(DetailsViewMode.Edit)
End Sub
Protected Sub ButtonUpdate_Click(sender As Object, e As EventArgs)
' Place the DetailsView into Update mode.
'----------------------------------------
DetailsView.ChangeMode(DetailsViewMode.)
End Sub
End Class
ButtonUpdate_Click 例程不完整,因为我们不知道如何让 DetailsView 进行更新。
附加说明:这是我们第一次尝试通过不在标记中设置 DataSource 来执行 DetailsView。我们没有这样做,而是使用 DataSet 设计器中创建的 DataSet TableAdapter 中的数据。
如果我们在标记中执行 DetailsView 和 DataSource ,那么 Edit 和 Update 按钮可以正常工作。我们也这样做是为了尽可能消除额外的编码。