gpt4 book ai didi

asp.net - 将 ASP.Net DetailsView 置于编辑模式和更新模式

转载 作者:行者123 更新时间:2023-12-02 05:22:29 29 4
gpt4 key购买 nike

我们正在使用带有 VB.Net 代码隐藏文件的 ASP.Net DetailsView。我们试图通过允许用户单击“编辑”按钮然后单击“更新”按钮来允许用户编辑和保存 DetailsView 中的更改。

当用户单击“编辑”按钮时没有任何反应,因此我们为“编辑”按钮添加了一个 OnClick 处理程序。 DetailsView 将进入编辑模式,但前提是用户单击编辑按钮两次。 (也许是 ASP.Net 错误?)

一旦 DetailsView 处于编辑模式,更新和取消按钮将按预期显示,但当用户单击其中任何一个按钮时都没有任何反应。我们在更新按钮上放置了一个 OnClick 以试图强制 DetailsView 更新,但 .ChangeMode(DetailsViewMode. 的唯一选择是编辑、插入、只读。

我还认为 DetailsView 不需要额外的 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" />
&nbsp;<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 进行更新。

补充说明:这是我们第一次尝试通过不在标记中设置数据源来创建 DetailsView。我们没有这样做,而是使用在 DataSet 设计器中创建的 DataSet TableAdapter 中的数据。

如果我们在标记中将 DetailsView 与 DataSource 一起使用,那么 Edit 和 Update 按钮可以毫无问题地工作。我们这样做也是为了尽可能消除额外的编码。

最佳答案

如果您想要 DetailsView 的自动编辑行为,您需要使用 CommandField 来显示编辑按钮:

<asp:DetailsView id="dvDetailsView" runat="server" DataSourceId="sqlDS" DataKeyNames="primaryKey">
<Fields>
<asp:CommandField ButtonType="Button" ShowEditButton="true" />
</Fields>
</asp:DetailsView>

如上所述,您需要包含 DataKeyNames 属性来指定数据源的主键,以便 ASP.NET 知道要更新数据源中的哪条记录。同样如上所述,您需要确保 Bind("columnName") 语句使用与数据存储中相同的字段名称。

此外,请确保您在 SqlDataProvider(或数据存储的等效项)中提供了 UpdateCommand,以便可以进行更新。

现在,当您将 DetailsView 置于编辑模式时,更新和取消按钮将自动显示在当前位置。如果您需要在数据存储中更新数据之前对数据进行一些处理,请在后面的代码中处理 DetailView 的 ItemUpdating 事件。

关于asp.net - 将 ASP.Net DetailsView 置于编辑模式和更新模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648377/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com