2013-04-08 29 views
0

我試圖讓用戶選擇他們的婚姻狀況,將更新數據庫中的字段。這是用戶第一次使用時的情況,但如果他們想再次更新它,則不會更新。asp.net更新數據庫從下拉列表

如果我選擇一個數據源,如果他們想要更新,那麼在第一次選擇DDL時不會給出其他選項。

*ASPX*

<asp:DropDownList ID="DDLMarital" runat="server" TabIndex="1"> 
       <asp:ListItem Value = "Single" Text = "Single">Single</asp:ListItem> 
       <asp:ListItem Value = "Married" Text = "Married">Married</asp:ListItem> 
       <asp:ListItem Value = "Separated" Text = "Separated">Separated</asp:ListItem> 
       <asp:ListItem Value = "Divorced" Text = "Divorced">Divorced</asp:ListItem> 
      </asp:DropDownList> 

** * *ASPX.VB* ****

'binding... 

保護小組的Page_Load(發送者爲對象,例如作爲System.EventArgs)把手Me.Load

Dim dvSql4 As DataView = 
DirectCast(SqlMarital.Select(DataSourceSelectArguments.Empty), DataView) 
    For Each drvSql4 As DataRowView In dvSql4 
     DDLMarital.Text = drvSql4("Marital_Status").ToString() 
    Next 

結束子

「更新數據庫時, 「下一步」 按鈕是點擊 Protected Sub BtnNext_Click(sender As Object,e As System.EventArgs)Handle BtnNext.Click

Dim con As New SqlConnection 
    Dim cmd As New SqlCommand 

    con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\scrummingit2.mdf;Integrated Security=True;User Instance=True" 
    con.Open() 

    cmd.Connection = con 
    cmd.CommandText = ("UPDATE Student_Personal_Details SET Marital_Status = @Marital WHERE Student_No = @StudentNo") 

    Dim maritalParam As New SqlParameter("@Marital", DDLMarital.Text) 
    Dim studentNoParam As New SqlParameter("@StudentNo", lblEnrolmentStudentNumber.Text) 

    lblEnrolmentStudentNumber.Text = Session("Student") 

    cmd.Parameters.Add(maritalParam) 
    cmd.Parameters.Add(studentNoParam) 

    cmd.ExecuteNonQuery() 

    con.Close() 

End Sub

任何人都可以幫忙嗎?在谷歌沒有找到任何答案的日子裏,現在變得絕望了。

+0

重置你得到任何錯誤? – user1102001 2013-04-08 10:03:27

+0

沒有錯誤。只是繼續按預期從數據庫不更新 – Mark 2013-04-08 10:07:35

+0

您可以檢查與sql-profiler什麼是通過時執行查詢 – user1102001 2013-04-08 10:14:54

回答

0

您應該檢查PostBack,並且只有當它不是回發時才分配選定的值。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack 
     Dim dvSql4 As DataView = 
    DirectCast(SqlMarital.Select(DataSourceSelectArguments.Empty), DataView) 
     For Each drvSql4 As DataRowView In dvSql4 
      DDLMarital.Text = drvSql4("Marital_Status").ToString() 
     Next 
    End If 
End Sub 

用戶的選擇是目前被忽略的價值獲得每個Load

+0

謝謝@nunespascal!它完美的作品!現在強調一點。 – Mark 2013-04-08 10:26:26

+0

不客氣! :-) – nunespascal 2013-04-08 10:26:59