1

大家好,我是新手,我正在为我的 asp.net 网站苦苦挣扎,我们的职责是制作兽医手术预订系统。

我有一个包含 4 个字段的 asp.net 页面,其中一个字段根据下面的 vb 代码在页面加载时填充。

我正在尝试获取下拉列表控件的选定值(或文本)并将其用作记录中第一个字段的值,但是每次我在下拉列表中选择第二个或第三个值并单击提交按钮时,新的创建的记录在下拉列表中插入第一个值。

希望你能帮忙。

Imports System.Linq
Imports System.Data.Linq

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim db As New LinQTASK5DataContext
        Dim mu As MembershipUser = Membership.GetUser()
        Dim g As Guid = mu.ProviderUserKey
        Session.Item("uGUID") = g.ToString
        Dim animal = From a In db.pets Where g = a.userGuid Select a.petName
        Dim valSelec = animal
        DropDownList1.DataSource = animal
        DropDownList1.DataBind()
        RangeValidator1.MinimumValue = DateTime.Now.ToString("dd/MM/yyyy")
        RangeValidator1.MaximumValue = New DateTime(2100, 1, 1).ToString("dd/MM/yyyy")
    End Sub
    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim db As New LinQTASK5DataContext
        Dim b As New booking With {.petName = DropDownList1.SelectedItem.Text, .VetID = cmbVet.Text, .Date = lblDate.Text, .slotID = cmbSlot.Text}
        db.bookings.InsertOnSubmit(b)
        db.SubmitChanges()
        Response.Redirect("~/customers/viewbookings.aspx")
    End Sub
End Class
4

2 回答 2

0

每次页面加载时,您都会重新绑定下拉列表。您应该将绑定封装在 if 语句中。

If Not Page.IsPostBack Then
   // your code here
End If
于 2012-04-19T20:25:57.570 回答
0

您需要更改 Page_Load 函数并测试回发:

if not IsPostBack then
   //do your all your  initialization stuff
end if

如果您不这样做,那么当您单击提交时,所有代码都会再次运行,并且您的下拉列表将重置为其初始值。if 语句确保您仅在第一次加载页面时进行初始化,以便获得新值。

于 2012-04-19T20:27:21.420 回答