使用LINQ和下拉列表将新记录输入SQL数据库

时间:2012-04-19 19:34:48

标签: asp.net sql vb.net linq

大家好我是新手,我在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

2 个答案:

答案 0 :(得分:0)

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

If Not Page.IsPostBack Then
   // your code here
End If

答案 1 :(得分:0)

您需要更改Page_Load功能并测试Postback:

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

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