FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2285|回复: 4
打印 上一主题 下一主题

如何从弹出窗口传多个值呢?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-17 22:12:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何从窗口页面里传多个值呢?
如下图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2014-4-18 07:53:39 | 只看该作者
建议你看一下 这几个地方 :1、在主界面加载要弹出的新窗口 那个位置的代码;2、新窗口的grid的DataKeyNames和隐藏
板凳
发表于 2014-4-18 11:25:14 | 只看该作者
1、从你截图看,感觉你返回选择对象的ID就可以,然后在父窗口根据返回的ID重新读一次数据库。
2、如果你不想多读一次数据库,可以将选择的对象序列化返回,然后在父窗口再反序列化回对象实例。

  1.         /// <summary>
  2.         /// 返回选择客户ID
  3.         /// </summary>
  4.         /// <param name="index"></param>
  5.         private void PostBackSelectID(int index)
  6.         {
  7.             object[] keys = gdData.DataKeys[index];
  8.             int id = Convert.ToInt32(keys[0]);
  9.             string name = Convert.ToString(keys[1]);

  10.             string encode = JsonHelper.GetJson<Customer>(new Customer() { ID = id, Name = name });
  11.                
  12.             //string encode = Server.UrlEncode(jb.ToString());
  13.             PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference(string.Format("Customer${0}",encode)));
  14.         }
复制代码




  1.     public static class JsonHelper
  2.     {
  3.         /// <summary>
  4.         /// 生成Json格式
  5.         /// </summary>
  6.         /// <typeparam name="T"></typeparam>
  7.         /// <param name="obj"></param>
  8.         /// <returns></returns>
  9.         public static string GetJson<T>(T obj)
  10.         {
  11.             DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
  12.             using (MemoryStream stream = new MemoryStream())
  13.             {
  14.                 json.WriteObject(stream, obj);

  15.                 string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson;
  16.             }
  17.         }

  18.         /// <summary>
  19.         /// 获取Json的Model
  20.         /// </summary>
  21.         /// <typeparam name="T"></typeparam>
  22.         /// <param name="jsonString"></param>
  23.         /// <returns></returns>
  24.         public static T ParseFromJson<T>(this string jsonString)
  25.         {
  26.             if (string.IsNullOrEmpty(jsonString)) return default(T);
  27.             T obj = Activator.CreateInstance<T>();
  28.             using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
  29.             {
  30.                 DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  31.                 return (T)serializer.ReadObject(ms);
  32.             }
  33.         }

  34.         public static string ToJson(this object obj)
  35.         {
  36.             return JsonConvert.SerializeObject(obj);
  37.         }

  38.         public static T FromJson<T>(this string jsonString)
  39.         {
  40.             return JsonConvert.DeserializeObject<T>(jsonString);
  41.         }
  42.     }
复制代码

地板
 楼主| 发表于 2014-4-18 22:40:56 | 只看该作者
gdcrx 发表于 2014-4-18 11:25
1、从你截图看,感觉你返回选择对象的ID就可以,然后在父窗口根据返回的ID重新读一次数据库。
2、如果你不 ...

谢谢了                        
5#
 楼主| 发表于 2014-4-18 22:45:59 | 只看该作者
本帖最后由 shouzhi2007 于 2014-4-18 22:48 编辑

不过我昨天,研究出来了。用数组传的。
用GetWriteBackValueReference ,多传几个值就可以了。

这是传值代码:
  1. protected void btnSaveClose_Click(object sender, EventArgs e)
  2.         {
  3.             SyncSelectedRowIndexArrayToHiddenField();
  4.             int selectedRowIndex = Grid1.SelectedRowIndex;

  5.             string SparepartsID = Grid1.DataKeys[selectedRowIndex][0].ToString();
  6.             string SparepartsBianhao = Grid1.DataKeys[selectedRowIndex][1].ToString();
  7.             string SparepartsCode = Grid1.DataKeys[selectedRowIndex][2].ToString();
  8.             string SparepartsName = Grid1.DataKeys[selectedRowIndex][3].ToString();
  9.             string SparepartsSpecification = Grid1.DataKeys[selectedRowIndex][4].ToString();
  10.             string Sparepartsprice = Grid1.DataKeys[selectedRowIndex][5].ToString();

  11.             PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(SparepartsID, SparepartsBianhao, SparepartsCode, SparepartsName, SparepartsSpecification,Sparepartsprice)
  12.                  + ActiveWindow.GetHideReference());

  13.         }
复制代码


这是接受值代码:
  1. private void InitEquipmentSparepart()
  2.         {
  3.             // 打开编辑窗口
  4.             string selectSparepartURL = String.Format("./Spareparts_select_bianhao.aspx?ids=<script>{0}</script>", hfSelectedSparepart.GetValueReference());
  5.             tbSelectedKcBianhao.OnClientTriggerClick = Window1.GetSaveStateReference(hfSelectedSparepart.ClientID, tbSelectedKcBianhao.ClientID, tbxKcCode.ClientID, tbxKcName.ClientID, tbxKcSpecification.ClientID, nbbKcPrice.ClientID)
  6.                     + Window1.GetShowReference(selectSparepartURL, "选择设备名称");

  7.         }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-26 15:28 , Processed in 0.055082 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表