asp.net 如何跳出一个选择性的(是或者否)对话框

zhengyingcan 2012-09-18 08:23:01
我写了以下代码不起作用,不知道为什么
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpPostedFile p;
if (Request.QueryString["type"] == "true")
{
ViewState["a"] = '5';
}
if (!Page.IsPostBack)
{
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow dr;
dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));

for (int i = 0; i < 8; i++)
{
dr = dataTable1.NewRow();
dr[0] = i;
dr[1] = "【孟子E章】" + i.ToString();
dataTable1.Rows.Add(dr);
}
ListView1.DataSource = dataTable1;
ListView1.DataBind();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
String UserId = "";
for (int i = 0; i < ListView1.Items.Count; i++)
{
CheckBox chktemp = ListView1.Items[i].FindControl("CheckBox1") as CheckBox;
if (chktemp != null && chktemp.Checked == true)
{
UserId += ListView1.DataKeys[i].Value + ",";

}
if (i == 4)
{
ViewState["a"] = '1';
Response.Write("<script>location.href='Default.aspx?type='+confirm('该学生此学科成绩已存在,是否覆盖此成绩?');</script");
if (Request.QueryString["type"] == "true")
{
Response.Write(ViewState["a"].ToString());
}
}
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "x", "alert('有选中 id=" + UserId + "')", true);
}


}
...全文
387 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 的回复:]

引用 19 楼 的回复:

问题是 后台代码调用前台js返回值呢 ,前台js返回一个 "是" 与 "否" 值, 在后台如何捕获这个信息呢

把返回值放到隐藏域不就行了吗。
[/Quote]
能不能给一个例子大神
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

问题是 后台代码调用前台js返回值呢 ,前台js返回一个 "是" 与 "否" 值, 在后台如何捕获这个信息呢
[/Quote]
把返回值放到隐藏域不就行了吗。
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
上面是完整的思路,具体的事情还要自己处理,如错误处理,安全性等。如果提交更多数据,可以使用post
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
以上代码直接复制粘贴测试

jquery-1.8.0.min.js文件下载
http://jquery.com/
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
一个完整的例子
aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script src="jquery-1.8.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
var uid = [],usercount;
function GetUser() {
uid = [];
var userIds = document.getElementsByName("UserId");
for (i = 0; i < userIds.length; i++) {
if (userIds[i].checked) {
uid.push(userIds[i].value);
}
}
if (uid.length == 0) {
alert("请选择用户");
return;
}
usercount = 0;
ProcessUserData();
}

function ProcessUserData() {
if (usercount >= uid.length) {
alert("所选用户处理完毕!");
$("#Debug").html("所选用户处理完毕!");
return;
}
$("#Debug").html("正在处理 id = " + uid[usercount]);
$.ajax({
url: '<%=Request.FilePath %>?UserId=' + uid[usercount] + "&step=1&t=" + (new Date()).valueOf(),
dataType: "text",
success: function (data) {
if (data.indexOf("用户成绩已经存在") > -1) {
var ret = window.confirm("id=" + uid[usercount] + " 的用户成绩已经存在,你要否要覆盖??");
if (ret) {
//用户选择了“是”,就进行覆盖操作
$.ajax({
url: '<%=Request.FilePath %>?UserId=' + uid[usercount] + "&step=2&t=" + (new Date()).valueOf(),
dataType: "text",
success: function (msg) {
alert(msg);
usercount++;
ProcessUserData()
}
});
}
else {
usercount++;
ProcessUserData()
}
}
else {
usercount++;
ProcessUserData()
}
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<table>
<thead>
<tr>
<th>选择</th>
<th>工号</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<input name="UserId" type="checkbox" value='<%# Eval("UserId")%>' />
</td>
<td>
<%# Eval("UserId")%>
</td>
<td>
<%# Eval("UserName")%>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:Button ID="Button1" runat="server" Text="测试处理" OnClientClick="GetUser();return false;" />
<div id="Debug"></div>
</form>
</body>
</html>


C#代码
protected void Page_Load(object sender, EventArgs e)
{
String step = Request.QueryString["step"];
if (String.IsNullOrEmpty(step))
{
//首次进来,执行绑定
if (!Page.IsPostBack)
{
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow dr;
dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));

for (int i = 0; i < 8; i++)
{
dr = dataTable1.Rows.Add(new Object[] { i, "【孟子E章】" + i.ToString() });
}
ListView1.DataSource = dataTable1;
ListView1.DataBind();
}
}
else
{
Response.ContentType = "text/plain";
Response.Expires = -100;
String UserId = Request.QueryString["UserId"];
if (step.Equals("1"))
{
//判断用户成绩是否存在,这里假定id=2,3,6的用户存在,实际应用是查数据库判断
if (UserId.Equals("2") || UserId.Equals("3") || UserId.Equals("6"))
{
Response.ClearContent();
Response.Write("用户成绩已经存在");
Response.End();

}
else
{
Response.ClearContent();
Response.Write("");
Response.End();
}
return;
}
else if (step.Equals("2"))
{
//进行覆盖操作
Response.ClearContent();
Response.Write("用户" + UserId + "已经被覆盖。");
Response.End();
return;
}
}
}
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
问题是 后台代码调用前台js返回值呢 ,前台js返回一个 "是" 与 "否" 值, 在后台如何捕获这个信息呢
misswangjinfeng 2012-09-20
  • 打赏
  • 举报
回复
不是少了个>吗
Response.Write("<script>location.href='Default.aspx?type='+confirm('该学生此学科成绩已存在,是否覆盖此成绩?');</script>");
  • 打赏
  • 举报
回复

function confrim()
{
if (confirm("是否继续执行?")) {
document.getElementById("hidFalg").value = "1";
// 通过__doPostBack调用后台方法
__doPostBack('ctl00$main$btnFunction', '');
}
else
{
document.getElementById("hidFalg").value = "0";
}
|
// 需要在画面上加个隐藏域hidFalg


If "0".Equals(hdnTouroku.Value) = True Then
' 确认之前的处理写在这里
' 确认消息
ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), DateTime.Now.ToString().Replace(":", " "), _
"confirm();", True)

'hdnTouroku.Value = "1"
ElseIf "1".Equals(hdnTouroku.Value) = True Then
' 确认之后要继续的处理写在这里
end if

这是个大概思路,就是通过隐藏域来表示操作的状态,并通过dopostback来调用js方法
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
或者把例子发到我的QQ邮箱 380151700@qq.com
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

后台代码调用前台js就可以实现
[/Quote]
高人帮忙举个例子吧,拜托了
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 的回复:]

引用 36 楼 的回复:

看看这样可以不?

Response.Write("<script>location.href='Default.aspx?type='+if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?'))retrun 'trun';</script");

那接下去代码如何获取 用户 选择的结果呢
[/Quote]
我先试一下吧
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 的回复:]

看看这样可以不?

Response.Write("<script>location.href='Default.aspx?type='+if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?'))retrun 'trun';</script");
[/Quote]
那接下去代码如何获取 用户 选择的结果呢
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 的回复:]

VS 2008 下,可以直接浏览测试
不要理会警告
[/Quote]
只跳出来一个测试处理,没有listView数据,
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
VS 2008 下,可以直接浏览测试
不要理会警告
zg_heng 2012-09-20
  • 打赏
  • 举报
回复
看看这样可以不?

Response.Write("<script>location.href='Default.aspx?type='+if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?'))retrun 'trun';</script");
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 的回复:]

警告 1 更新 JScript IntelliSense 时出错: F:\测试\wesite\jquery-1.8.0.min.js: 对象不支持此属性或方法

这个警告只是在你写代码的时候,智能提示不显示,不影响你代码的运行的

另外,现在都VS2012了,使用VS2010没有这样的问题
[/Quote]
哦,也就是非常要升级到VS 2012 才可以用吗? 有没有在VS 2008 下也可以用的代码呢
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
警告 1 更新 JScript IntelliSense 时出错: F:\测试\wesite\jquery-1.8.0.min.js: 对象不支持此属性或方法

这个警告只是在你写代码的时候,智能提示不显示,不影响你代码的运行的

另外,现在都VS2012了,使用VS2010没有这样的问题
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
新建网站也是报错,错误如下:

警告 1 更新 JScript IntelliSense 时出错: F:\测试\wesite\jquery-1.8.0.min.js: 对象不支持此属性或方法 @ 1:19272 F:\测试\wesite\Default.aspx 1 1 F:\测试\wesite\
zhengyingcan 2012-09-20
  • 打赏
  • 举报
回复
我的是VS 2008,我新建网站试试吧
孟子E章 2012-09-20
  • 打赏
  • 举报
回复
你的VS版本几啊?
你可以新建网站测试
加载更多回复(20)

62,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧