找回密码
 立即注册

QQ登录

只需一步,快速开始

simonshen

论坛元老

27

主题

72

帖子

1万

积分

论坛元老

积分
17729

活字格认证

simonshen
论坛元老   /  发表于:2012-7-11 14:02  /   查看:10193  /  回复:10
在spread中有一列的类型设置为RadButtonList,要实现该列只能选中一个如何解决?

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-7-11 18:10:00
沙发
回复 1楼simonshen的帖子

你好,可以使用 RadioButtonListCellType OnClientClick 属性设置前台选择更改响应 js,在该函数中使用 js 操作 DOM 元素即可。
后台

  1. rbl.OnClientClick = "check";
复制代码

前台:

  1.     <script type="text/javascript">
  2.         function check() {
  3.             //add your code here
  4.         }
  5.     </script>
复制代码
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-7-12 15:39:00
板凳
不好意思我没有表达清楚,我现在遇到的问题是我把spreed的第一列的类型设置为RadButtonList,也没加什么特别的代码,但是浏览时第一列的单选按钮全部处于选中状态,请问是否需要在初始化时写代码设置RadButtonList的是否选中状态以及其他什么属性呢?另,感谢你们这么认真的回答
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-12 16:34:00
地板
回复 3楼simonshen的帖子

你好,不必客气,很高兴我的回答对你有所帮助。
可以通过设置 cell 的 value 值选择 riadio button,测试代码如下:

  1. FarPoint.Web.Spread.RadioButtonListCellType rbl = new FarPoint.Web.Spread.RadioButtonListCellType();
  2.             FarPoint.Web.Spread.ListItem[] items = new FarPoint.Web.Spread.ListItem[2];
  3.             FarPoint.Web.Spread.ListItem item = new FarPoint.Web.Spread.ListItem();
  4.             item.Text = &quot;A&quot;;
  5.             item.Value = &quot;1&quot;;
  6.             items[0] = item;
  7.             item = new FarPoint.Web.Spread.ListItem();
  8.             item.Text = &quot;B&quot;;
  9.             item.Value = &quot;2&quot;;
  10.             items[1] = item;
  11.             rbl.ListItems = items;
  12.             FpSpread1.ActiveSheetView.Columns[0].CellType = rbl;
  13.             //选择按钮 A
  14.             FpSpread1.ActiveSheetView.Cells[0, 0].Value = 1;
  15.             //选择按钮 B
  16.             FpSpread1.ActiveSheetView.Cells[1, 0].Value = 2;
  17.             //设置非 item.value 值即为不选择
  18.             FpSpread1.ActiveSheetView.Cells[2, 0].Value = 0;
复制代码
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-7-12 17:49:00
5#
如果我需要实现一种效果就是整个spreed整个第一列只能有一个选中,应该怎么做呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-13 14:21:00
6#
回复 5楼simonshen的帖子

方法就是2楼中提到的方法,在Click事件中判断该列是不是还有其它Radio被选中,如果有将其设置为不选中状态:
  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         if (IsPostBack)
  4.             return;

  5.         FarPoint.Web.Spread.RadioButtonListCellType rbl = new FarPoint.Web.Spread.RadioButtonListCellType();
  6.         rbl.OnClientClick = "Column1ValueChanged()";
  7.         FarPoint.Web.Spread.ListItem[] items = new FarPoint.Web.Spread.ListItem[2];
  8.         FarPoint.Web.Spread.ListItem item = new FarPoint.Web.Spread.ListItem();
  9.         item.Text = "A";
  10.         item.Value = "1";
  11.         items[0] = item;
  12.         item = new FarPoint.Web.Spread.ListItem();
  13.         item.Text = "B";
  14.         item.Value = "2";
  15.         items[1] = item;
  16.         rbl.ListItems = items;
  17.         FpSpread1.ActiveSheetView.Columns[0].CellType = rbl;
  18.         //选择按钮 A
  19.         FpSpread1.ActiveSheetView.Cells[0, 0].Value = 1;
  20.         //选择按钮 B
  21.         FpSpread1.ActiveSheetView.Cells[1, 0].Value = 0;
  22.         //设置非 item.value 值即为不选择
  23.         FpSpread1.ActiveSheetView.Cells[2, 0].Value = 0;
  24.     }
复制代码

  1.     <script language="javascript" type="text/javascript">
  2.                 function Column1ValueChanged(event) {
  3.                     var spread1 = document.getElementById("<%=FpSpread1.ClientID %>");
  4.                     var rc = spread1.GetRowCount();
  5.                     var ac = spread1.ActiveRow;
  6.                     for (var r = 0; r < rc; r++) {
  7.                 var v = spread1.GetValue(r,0);
  8.                         if (r != ac &amp;&amp; v != null) {
  9.                             spread1.SetValue(r, 0,null);
  10.                         }
  11.                     }
  12.         }
  13.     </script>
复制代码
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-7-13 18:26:00
7#
为什么“var v = spread1.GetValue(r,0);”每次取值都是True呢?如何判断取到的值是False?
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-7-13 22:00:00
8#
不好意思,补充一下,我将第一列换成了多选框,但是在JS代码中,为什么“var v = spread1.GetValue(r,0);”无论是不是勾上了,每次取值都是True呢?如何判断取到的值是False?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-16 09:52:00
9#
回复 8楼simonshen的帖子

simonshen 你好,
没有重现楼主的问题,请参考我的 Demo :
5163.zip (18.05 KB, 下载次数: 570)
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-7-16 10:25:00
10#
问题已经解决,感谢两位的付出
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部