2016-07-11 69 views
0

如何使用dropdownlist項目將值插入數據庫,我想要的是選擇Item然後當我按下提交按鈕時,數值將使用asp.net vb.net代碼保存到sql server數據庫,問題是,它始終在sqlserver數據庫中保存0值,即使我選擇了1,2,3或4,問題是JavaScript,如果我刪除了JavaScript,它可以選擇我想要的值並且沒有問題,但我需要它來禁用它的值,如果它已經被選中,爲了避免重複數據庫,有人可以幫我找出它的JavaScript,如果我嘗試按保存按鈕,你可以看到下拉列表正在返回到它的默認值值0然後重置,並且不保存我從下拉列表中選擇的值謝謝.............Dropdownlist啓用禁用值

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb"   
    Inherits="_Default" Debug="true"%> 

    <!DOCTYPE html> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 

    <title></title> 
    </head> 
    <body> 

    <form id="form1" runat="server"> 
     <div> 
      <asp:DropDownList ID = "frst" runat="server" AutoPostBack="true"> 
      <asp:ListItem value="0">Select</asp:ListItem> 
      <asp:ListItem value="1">1</asp:ListItem> 
      <asp:ListItem value="2">2</asp:ListItem> 
      <asp:ListItem value="3">3</asp:ListItem> 
      <asp:ListItem value="4">4</asp:ListItem>   
      </asp:DropDownList> 
      <asp:DropDownList ID = "secnd" runat="server"> 
     <asp:ListItem value="0">Select</asp:ListItem> 
      <asp:ListItem value="1">1</asp:ListItem> 
      <asp:ListItem value="2">2</asp:ListItem> 
      <asp:ListItem value="3">3</asp:ListItem> 
      <asp:ListItem value="4">4</asp:ListItem>   
      </asp:DropDownList>  

       <asp:Button ID="btnSave" runat="server" Text="Save"  
     OnClick="btnSave_Click" /> 
     <asp:Label ID="lblmsg" runat="server"></asp:Label> 

    </div> 


    <script type="text/javascript"> 
    var ids = ['frst', 'secnd']; 

    NodeList.prototype.forEach = HTMLCollection.prototype.forEach =  
     Array.prototype.forEach; 
    var selected = []; 
    ids = makeid(ids); 
    var opts = find(ids); 
    updateS(opts); 
    massdisabler(opts); 
    assignFunc(ids, disabler); 

    function assignFunc(i, func) { //done 
    var x; 
    for (x = 0; x < i.length; ++x) { 
    i[x].onchange = function() { 
     func(this); 
    }; 
    } 
    } 

    function disabler(i) { 
    console.log(selected); 
    updateS(opts); 
    massdisabler(opts); 
    } 

    function makeid(i) { //done 
    var o = []; 
    i.forEach(function (v) { 
    o.push(document.getElementById(v)) 
    }); 
    return o; 
    } 

    function find(ids) { //done 
    var o = {}; 
    for (var i = 0; i < ids.length; ++i) { 
    o[i] = {}; 
    ids[i].children.forEach(function (v, n) { 
     o[i][n] = v; 
    }); 
    } 

    return o; 
    } 

    function massdisabler(op) { //done 
    var y = Object.keys(op).length; 
    for (var x = 0; x < y; x++) { 
    var t = 0, 
     l = Object.keys(opts[x]).length; 
    for (var v = 0; v < l; v++) { 
     t = op[x][v]; 

     if (selected.some(function (k) { 
      if (t.value == k) { 
       return true; 
     } 
     })) { 
      t.setAttribute("disabled", "disabled"); 
     } else { 
      t.removeAttribute("disabled"); 
     } 
     } 
    } 
    } 

    function updateS(op) { //done 
    var s = [], 
    y = Object.keys(op).length; 

    for (var x = 0; x < y; x++) { 

    var t = 0, 
     l = Object.keys(opts[x]).length; 

    for (var v = 0; v < l; v++) { 
     t = op[x][v]; 
     var yn = s.some(function (k) { 
      if (t.value == k) { 
       return true; 
      } 
     }); 
     if (t.selected && (!yn)) s.push(t.value); 
     } 
    } 
    selected = s; 
    } 
    </script> 

    </form> 

    </body> 
    </html> 

可有人helpme我想修改我的代碼,請不要downvote我只是一個初學者由於這是整個代碼請幫我Im做這些了幾個星期:

Protected Sub btnSave_Click(sender As Object, e As EventArgs) 
    Dim cs As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString 
    Dim cn As SqlConnection = New SqlConnection(cs) 
    Dim cmd As SqlCommand = New SqlCommand() 
    cmd.Connection = cn 
    cmd.CommandType = CommandType.Text 
    cmd.CommandText = "insert into Names values(@FirstValue,@SecondValue)" 
    cmd.Parameters.Clear() 
    cmd.Parameters.AddWithValue("@FirstValue", frst.SelectedItem.Value) 
    cmd.Parameters.AddWithValue("@SecondValue", secnd.SelectedItem.Value) 
    If cn.State = ConnectionState.Closed Then 
     cn.Open() 
    End If 
    cmd.ExecuteNonQuery() 
    cn.Close() 
    lblmsg.Text = "Data entered successfully!!!" 

End Sub 
+0

放置一個HiddenField,將您的下拉選擇值放置到HiddenField(在執行任何JS代碼之前)。在服務器端從HiddenField獲取值。我希望這有幫助! – Sami

+0

禁用控件以及未選中的複選框/單選按鈕不會通過帖子或獲取方法發送到服務器。在 - 這可能會導致問題嗎? – jeff

+0

你好,你嘗試過。問題,如果我刪除了JavaScript,我可以選擇並保存值,無論我在下拉列表中選擇了什麼值,並將其保存到數據庫中,但如果我再次包括JavaScript並按下按鈕,它將保存值0,即使我選擇其他值。謝謝 – gunter

回答

0

採取viewstatehiddenfield並將dropdownlistSelectedValue分配給這些中的任何一個。

您的問題將解決。

+0

Sir Vahid你可以給我一個示例solutin如何使用dropdownlist如果你不介意謝謝,我需要幫助 – gunter