首页 新闻 会员 周边 捐助

对话框问题

0
悬赏园豆:20 [已关闭问题]

请问下:
在girdview中选中一行,弹出对话框的问题。
页面有个textbox,有值则弹出的提示框内容是textbox值加选中行的某个值;无值则弹出的是绑定值。
对话框提示放page_load 吧,第一次点击弹出的框,没值,都是空串。接下来,点button都正常。给gridview每行一button,在RowDataBound写,可弹出的提示值,只能是绑定值,都与textbox无关了。

我放到button里写

ClientScript.RegisterStartupScript(this.GetType(), DateTime.Now.ToString(), "confirm('车牌号:" + dlcp + " 单号为:" +dh + "的信息发送给" + iphone + "吗?');", true);

这句代码后面的操作都执行完了,才弹出对话框来,顺序都倒过来了??

请问,怎么解决呀??

 

问题补充: test.aspx.cs protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { LoadData(); //this.Button1.Attributes.Add("onclick", "return confirm('编号:" + this.GridView1.Rows[CheckIndexs[0]].Cells[1].Text + " 姓名:" + GetNo(this.GridView1.Rows[CheckIndexs[0]].Cells[2].Text) + "吗?');"); } if (CheckIndexs.Length.Equals(1)) { //this.Button1.Attributes.Add("onclick", "return confirm('编号:" + this.GridView1.Rows[CheckIndexs[0]].Cells[1].Text + " 姓名:" + GetNo(this.GridView1.Rows[CheckIndexs[0]].Cells[2].Text) + "吗?');"); } } protected int[] CheckIndexs { get { List<int> checkedIndex = new List<int>(); string type = HdnSelectedValues.Value; if(type.Length>0) { type =type.TrimEnd(new char[] { ',' }); string[] strlst= type.Split(','); foreach (string index in strlst) { checkedIndex.Add(Convert.ToInt32(index)); } } return checkedIndex.ToArray(); } } private string GetNo(string name) { return this.TextBox1.Text.Trim().Length > 0 ? TextBox1.Text : name; } private void LoadData() { DataTable dt = new DataTable(); DataColumn id = new DataColumn("id"); dt.Columns.Add(id); DataColumn name = new DataColumn("name"); dt.Columns.Add(name); for (int i = 0; i <= 10; i++) { DataRow row = dt.NewRow(); row["id"] = i; row["name"] = "name" + i.ToString(); dt.Rows.Add(row); } this.GridView1.Dat
草样绿想的主页 草样绿想 | 初学一级 | 园豆:80
提问于:2009-11-03 16:49
< >
分享
其他回答(1)
0

楼主应该仔细理解一下客户端执行和服务器端执行的区别。

之所以执行顺序倒过来是因为--ClientScript.RegisterStartupScript(this.GetType(), DateTime.Now.ToString(), "confirm('车牌号:" + dlcp + " 单号为:" +dh + "的信息发送给" + iphone + "吗?');", true); 这句是在点击按钮后传回服务器端执行的,它一次会把button中的所有事件都执行完,执行完成后它把注册了客户端事件的页面再传回客户端,客户端再根据脚本执行confirm。

 

之所以你之前放在RowDataBound弹出的值与textbox无关,有可能是你写的绑定语句的问题,获取textbox的值要用:document.getElementById("TextBoxID").innerText。

 

给楼主的建议是:绑定时只绑定一个客户端的一个方法。触发方法时把你选中行的值传过去,然后在那个方法里计算和值,然后弹出对话框。这样思路清晰一些,一会客户端一会服务器端容易搞混。

dege301 | 园豆:2825 (老鸟四级) | 2009-11-03 17:07
之所以你之前放在RowDataBound弹出的值与textbox无关,有可能是你写的绑定语句的问题,获取textbox的值要用:document.getElementById("TextBoxID").innerText。 RowDataBound这个事件执行时,我想textbox还没有值吧? 我没写在客户端啊,我web很菜。c/s的比这个容易多了。弄了n久都搞不定。 不知道怎么弄。
支持(0) 反对(0) 草样绿想 | 园豆:80 (初学一级) | 2009-11-03 17:34
0

直接在button 的 OnClientClick 事件 写脚本,把要提示的信息,绑定的时候就处理好,然后传入 脚本事件。

如果返回true 那么执行 button的 OnClick事件。

Mr雨 | 园豆:1199 (小虾三级) | 2009-11-03 17:18
我开始也写了onclientclick事件,先判断有无选中一行,选中取值,弹出框。但是第一次选中,会没出现没选中的状态,不知道为什么。第二次以后都可以。
支持(0) 反对(0) 草样绿想 | 园豆:80 (初学一级) | 2009-11-03 17:38
直接在button 的 OnClientClick 事件 写脚本,第一次点button时,js里判断无选中行。 实际上是有的,但随后执行了button里的ClientClick 事件(也等于:第一次点击没提示弹出,接着,点第二次,第三次,都没弹出对话框)
支持(0) 反对(0) 草样绿想 | 园豆:80 (初学一级) | 2009-11-03 17:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册