0

这是我正在尝试的:

我有第一页 (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 打东西,但没有任何效果。

提前谢谢。

4

0 回答 0