找回密码
 立即注册

QQ登录

只需一步,快速开始

liu.bobo

高级会员

8

主题

14

帖子

1868

积分

高级会员

积分
1868

活字格认证

liu.bobo
高级会员   /  发表于:2012-7-27 18:28  /   查看:6791  /  回复:5
如下图,我们现在需要实现如下功能,画面加载,点击“表示”button,读出DB数据绑定到Spread,Spread的第三列有嵌入RadioButtonList,会根据读出来的数据属性就行选中或不选中的处理。然后外面提供两个button分别进行两个分支的全选中处理。
我们自己参照资料做了部分代码,现在出现的问题是,画面开始,点击“表示”button,Spread数据加载,然后点外面的“全表示”或者“全非表示”按钮,那么可以实现上述操作要求。但是一旦,在任意一行进行手动选中处理,那么以后如果点击外面相反的全选中处理,将无法将刚才手动操作的那一行成功设定(手动操作的行似乎永远变成当初选择的样子无法改变)。目前不知道如果处理。我传上我们的Sample,烦请帮忙调试。
成功以后,还要读出每一行的选中状态,以便后续处理使用,如果可以,也能贴出这部分代码。不胜感激。

RadioButtonList.jpg

49.33 KB, 下载次数: 533

source.rar

4.8 KB, 下载次数: 559

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-7-30 19:28:00
沙发
回复 1楼liu.bobo的帖子

你好,不好意思,让你久等了。
1.需要在代码中添加 Spread SaveChanges 方法,保存更改状态:

  1. /// <summary>
  2.         /// 全て表示
  3.         /// </summary>
  4.         /// <param name="sender"></param>
  5.         /// <param name="e"></param>
  6.         protected void AllDispButton_Click(object sender, EventArgs e)
  7.         {
  8.             //this.DispMethod();
  9.             SheetView sheet = this.ItemSpread.ActiveSheetView;
  10.             sheet.RowCount = 10;

  11.             for (int i = 0; i < 10; i++)
  12.             {
  13.                 sheet.Cells[i, 2].Value = 1;
  14.             }
  15.             this.ItemSpread.SaveChanges();
  16.         }

  17.         /// <summary>
  18.         /// 全て非表示
  19.         /// </summary>
  20.         /// <param name="sender"></param>
  21.         /// <param name="e"></param>
  22.         protected void AllUnDispButton_Click(object sender, EventArgs e)
  23.         {
  24.             //this.DispMethod();
  25.             SheetView sheet = this.ItemSpread.ActiveSheetView;
  26.             sheet.RowCount = 10;

  27.             for (int i = 0; i < 10; i++)
  28.             {
  29.                 sheet.Cells[i, 2].Value = 2;
  30.             }
  31.             this.ItemSpread.SaveChanges();
  32.         }
复制代码

2.至于每行的选中状态可以通过该 Cell[i,j].Value 来取。
回复 使用道具 举报
liu.bobo
高级会员   /  发表于:2012-7-31 15:30:00
板凳
你好,谢谢及时回复。
我们用你提供的source进行功能确认,基本要求能够实现,但是还发现还有些许问题。重现的具体步骤如下:
首先,按“表示”button,显示数据,然后按“全表示”,这样所有左边的RadioButton都将选中,然后手动选中右边若干个RadioButton。这个时候如果想通过按下“全表示”使得所有左边的RadioButton被选中将出现问题,无法达到效果。但是紧接着第二次按下“全表示”就能实现。这个我们不知道什么原因,烦请帮忙调查。
操作过程的截图请见附件

操作__.rar

101.88 KB, 下载次数: 612

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-31 20:29:00
地板
回复 3楼liu.bobo的帖子

你好,问题已经重现,明天回复。
回复 使用道具 举报
liu.bobo
高级会员   /  发表于:2012-7-31 21:07:00
5#
回复 4楼iceman的帖子

你好,我们经过调试,发现还需要在Page_Load方法里面进行SaveChanges()动作,加上后基本能够达到目的。虽然看起来好了,还是麻烦帮忙把把关,看我们这样处理问题是确实解决了,还是误打误撞的不靠谱的做法。
另外,画面文件上面的js代码,好像也没有什么必要,反正我们删除掉也能实现现在的操作。请帮忙确认一下。谢谢。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-8-1 17:30:00
6#
回复 5楼liu.bobo的帖子

你好,该解决方法可行,js 代码无需添加。感谢反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部