这是我正在尝试的:
我有第一页 (ListTraining.aspx),其工作是显示培训列表并允许您选择编辑或查看该培训。第二页 (EditTraining.aspx) 应该让您能够编辑培训信息。
怎么了:
当我单击 ListTraning 上的 Edit 时,它会执行 server.transfer 到 Editing training。我可以毫无问题地编辑文本框和复选框。当我单击 Save Training 按钮时出现问题,它会直接返回 ListTraining 页面而没有看到单击事件。调试后,我注意到所有的文本框和复选框都没有值,IsPostBack 总是错误的,我似乎无法弄清楚如何进入事件。
编码:
列表训练.aspx
<%@ Page Title="Training List" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="ListTraining.aspx.vb" Inherits="AFN_Personnel_Server.ListTraining" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Header" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div class="card">
<h1 class="card-header">Training List</h1>
<asp:GridView ID="gvTrainings" runat="server" HeaderStyle-CssClass="thead-dark" CssClass="table table-striped" DataKeyNames="TrainingId">
<Columns>
<asp:BoundField HeaderText="Training Name" DataField="Name" />
<asp:ButtonField ButtonType="Button" CommandName="it" Text="Edit" />
<asp:ButtonField ButtonType="Button" CommandName="vw" Text="View" />
</Columns>
</asp:GridView>
</div>
</div>
</asp:Content>
列表训练.aspx.vb
Public Class ListTraining Inherits System.Web.UI.Page
Dim _trainId As Integer = 0
Public Property trainId() As Integer
Get
'Get and Set stuff
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not PreviousPage Is Nothing Then
If PreviousPage.Title = "Add Employee" Then
Dim oPage = DirectCast(PreviousPage, AddEmployee)
lError.Text = oPage.pageError
End If
End If
'Get Data
gvTrainings.DataSource = lQ
gvTrainings.DataBind()
End Sub
Private Sub gvTrainings_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gvTrainings.RowCommand
_trainId = gvTrainings.DataKeys(e.CommandArgument)("StaffId")
If e.CommandName.ToLower = "it" Then
_trainId = gvTrainings.DataKeys(e.CommandArgument)("TrainingId")
Server.Transfer("~/Training/EditTraining.aspx", False)
End If
If e.CommandName.ToLower = "vw" Then
_trainId = gvTrainings.DataKeys(e.CommandArgument)("TrainingId")
Server.Transfer("~/Training/ViewTraining.aspx", True)
End If
End Sub
End Class
EditTraining.aspx
<%@ Page Title="" Language="vb" EnableViewState="True" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="EditTraining.aspx.vb" Inherits="AFN_Personnel_Server.EditTraining" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<span class="input-group-text">Training Name</span>
<asp:TextBox ID="tbTrainingName" runat="server" CssClass="form-control" placeholder="ex:// CPR" aria-describedby="basic-addon1"></asp:TextBox><br>
<asp:CheckBox ID="cbInterval" runat="server" /><label for="cbInterval" class="form-control">Done on an interval (ex// yearly or bi yearly)</label><BR>
<span class="input-group-text">Interval in Years</span><asp:TextBox ID="tbIntervalTime" runat="server" CssClass="form-control" TextMode="Number" aria-describedby="basic-addon1" max="24" min="0" step=".25" value="0"></asp:TextBox><br>
<asp:CheckBox ID="cbFromHire" runat="server" /><label for="cbFromHire" class="form-control">Interval starts on Hire Date</label><br>
<span class="input-group-text">Default Training Length (in hours)</span><asp:TextBox ID="tbDefaultHours" runat="server" CssClass="form-control" TextMode="Number" aria-describedby="basic-addon1" max="24" min=".25" step=".25" value="0"></asp:TextBox><br>
<asp:CheckBox ID="cbCoreTraining" runat="server" /><label for="cbFromHire" class="form-control">Is this a core training.</label><br>
<asp:HiddenField ID="hfTrainId" runat="server" />
<asp:Button ID="bSaveTraining" runat="server" Text="Save Training" CssClass="btn btn-outline-success" UseSubmitBehavior="false" />
</asp:Content>
EditTraining.aspx.vb
Public Class EditTraining Inherits System.Web.UI.Page
Dim _pageError As String
Dim iTrainId As Decimal
Dim oTrain As Training
Dim _trainId As Integer = 0
Public Property trainId() As Integer
'Get and Set stuff
End Property
Public Property sError() As Integer
'Get and Set stuff
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not PreviousPage Is Nothing Then
If PreviousPage.Title = "Training List" Then
Dim oPage = DirectCast(PreviousPage, ListTraining)
If IsNumeric(oPage.trainId) Then
'Pull Data from DB
'Fill in the TB's and CB's
Else
Response.Redirect("~\Training\ListTraining.aspx")
End If
End If
Else
If hfTrainId.Value.Length > 0 or IsPostBack Then
'Pull Data from DB
Else
Response.Redirect("~\Training\ListTraining.aspx")
End If
End If
End Sub
Private Sub bSaveTraining_Click(sender As Object, e As EventArgs) Handles bSaveTraining.Click
Try
'Save to DB
_pageError = oTraining.Name & " was sucessfully saved on " & Now()
Response.Redirect("~/Training/ViewTraining.aspx")
Catch ex As Exception
lError.Text = ex.Message
End Try
End Sub
End Class
请告诉我我在这里做错了什么。我已经尝试了 2-3 打东西,但没有任何效果。
提前谢谢。