【发布时间】:2014-04-30 14:51:03
【问题描述】:
我在我的 JavaScript 中创建了一个隐藏字段,这个隐藏字段用于捕获用户从消息框中选择的值。从下拉框中进行选择时,我正在调用以检查从下拉列表中选择的 ID 是否已经在表中,如果在表中只找到 ID,那么我正在调用 JavaScript显示消息框。如果用户选择是显示一些警报,如果用户选择否显示另一个警报。不知何故,我很难让它工作,当我从下拉列表中进行选择时没有任何反应。请帮忙,因为我花了几天时间研究这个。谢谢 这是我的代码:
//javascript code
<script type="text/javascript">
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Do you want to delete data?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
</script>
//在aspx文件中下拉
//code behind
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
string ID = ddlName.SelectedValue;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT count(*) from MyTable WHERE ID =@ID";
cmd.Parameters.AddWithValue("@ID", ID);
con.Open();
int result = (int)cmd.ExecuteScalar();
if (result >= 1)
{
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Confirm()", true);
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
}
else
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
}
}
con.Close();
}
}
}
【问题讨论】:
-
您的代码正试图通过查看表单值来获取确认对话框的结果,但是当您查看表单时该表单不会发回。您应该将需要在服务器上与在客户端上发生的事情分开。这将帮助您避免混淆。
-
所以你的意思是 SelectedIndexChanged 永远不会触发,或者在其中,confirmValue = nothing?
-
您需要在回调中将选择和警报的onchange ajax 到服务器
-
有人能告诉我你们的建议吗?我不是 ajax 或 java-script,我正在尝试提出某种解决方案,这就是我目前能够做到的。请帮忙。谢谢
标签: c# javascript asp.net