【发布时间】:2016-07-11 06:12:17
【问题描述】:
如何使用下拉列表项将值插入数据库,我想要的是选择项然后当我按下提交按钮时,数值将使用 asp.net vb.net 代码保存到 sql server 数据库,问题是,它总是在 sqlserver 数据库中保存 0 值,即使我选择了 1、2、3 或 4 ,问题是 javascript,如果我删除 javascript 它可以选择我想要的值并且没有问题,但我需要如果它已经被选中,它会禁用该值,以避免重复到数据库,有人可以帮我弄清楚javascript,如果我尝试按下保存按钮,你可以看到下拉列表返回到它的默认值 0 然后重置,而不是保存我从下拉列表中选择的值,谢谢......
<%@ 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>
有人可以帮助我我正在尝试修改我的代码请不要拒绝我只是一个初学者谢谢这是整个代码请帮助我我这样做了几个星期:
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
【问题讨论】:
-
放置一个 HiddenField,将下拉选择的值放入 HiddenField(在执行任何 JS 代码之前)。在服务器端从 HiddenField 获取值。我希望这会有所帮助!
-
禁用的控件,以及未选中的复选框/单选按钮,不会通过 post 或 get 方法发送到服务器。在
-
您好,您尝试过吗?问题,如果我删除了 javascript,我可以选择并保存我在下拉列表中选择的任何值并将其保存到数据库,但如果我再次包含 javascript 并按下按钮,即使我选择其他值,它也会保存值 0。谢谢
-
您好先生,您能给我一个解决方案而不是我的代码吗,使用我的下拉列表可以保存我从下拉列表中选择的任何内容,我需要帮助先生,这是我系统唯一的问题,我的老板想要,我只想禁用下拉列表中选择的数值,如果它已经在第一个下拉列表中被选中,谢谢......那个javascript的问题是只有当我按下保存按钮它会快速回发并重置所以值会在下拉列表1和2的数据库中都是零(0)
标签: javascript asp.net vb.net