1

こんにちは皆さん、私は初心者で、asp.net の Web サイトに苦労しています。

私は 4 つのフィールドを持つ asp.net ページを持っています。フィールドの 1 つは、以下の vb コードに従ってページの読み込み時に入力されます。

ドロップダウン リスト コントロールの選択された値 (またはテキスト) を取得し、それをレコードの最初のフィールドの値として使用しようとしていますが、ドロップダウン リストで 2 番目または 3 番目の値を選択して送信ボタンをクリックするたびに新しい作成されるレコードは、ドロップダウンリストに最初の値を挿入しています。

お役に立てれば幸いです。

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 関数を変更して Postback をテストする必要があります。

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

そうしないと、送信をクリックすると、そのコードがすべて再実行され、ドロップダウンリストが初期値にリセットされます。if ステートメントを使用すると、ページが最初に読み込まれたときにのみ初期化を実行できるため、新しい値を取得できます。

于 2012-04-19T20:27:21.420 に答える