找回密码
 立即注册

QQ登录

只需一步,快速开始

hezhilin

初级会员

34

主题

100

帖子

450

积分

初级会员

积分
450

活字格认证

hezhilin
初级会员   /  发表于:2013-2-20 23:36  /   查看:6642  /  回复:6
你好,我执行如下代码   grd是FpSpread控件(asp.net )
      dtBody = o.GetBody2ds(o.ForeignKeyNameBody & "='" & o.PrimaryKeyValue & "'").Tables(0)
        grd.DataSource = dtBody
        grd.DataBind()
以后,控件上新增行和插入行就不能用了,点一下,会出来一空行,这空行上随便输入一些内容,对勾按钮才能点,点完了这一行就加上了,但再点一下新增按钮,已加的这一行就没了!


其实我想要的效果就是,新增行一直能加,比如我要加5行,点5下新增行,然后再输入内容,完成后点保存就全部保存到数据库了!

在没有绑定grd.DataSource 之前,控件的新增按钮没问题,点几下,就会出来几行!

6 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-21 11:47:00
沙发
hezhilin 你好

如果是简单的给DataSource设置一个 New DataTable应该是问题的,我推测该问题和dtBody = o.GetBody2ds(o.ForeignKeyNameBody & "='" & o.PrimaryKeyValue & "'").Tables(0)
有关,能否发个例子演示以下该问题的重现步骤。
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-2-21 14:50:00
板凳
补充一个重要的问题,就是参照按钮也点不开了,新增行前可以,第一列我做成按钮列了!
另外,能不能单击,或当前行就出参照的按钮,现在是在第一列的单元格式上双击才出来按钮!
下面是代码:
新增行无效.rar (2.37 MB, 下载次数: 110)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-21 16:22:00
地板
回复 1楼hezhilin的帖子

hezhilin 你好

通过你发来的示例,我清楚了一楼中所描述的问题,Spread在绑定数据源的情况下通过前台每次只能添加一行数据,如果需要一次添加多上数据,需要在后台进行。

参照按钮失效的问题,你需要将调整设置单元格类型的时机:
  1.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         If Not IsPostBack Then
  3.             Call Button1_Click(Nothing, Nothing)
  4.         End If

  5.         Dim ctRefer As New Spread.PopupCellType
  6.         ctRefer.ID = "XXX"
  7.         ctRefer.OnClickPopup = "return ShowPopup();"
  8.         grd.Columns(0).CellType = ctRefer

  9.     End Sub
复制代码
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-2-21 16:58:00
5#
那如果绑定数据时也想实现像没绑定数据一样的功能怎么办呢?后台写代码窗体会闪的厉害,使用AJAX吗?另外我画个按钮后台写代码,那控件上的新增行和插入行、删除行(一次也只能删一行,要批量删除是不是也是后台写代码?)可以隐藏吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-21 18:18:00
6#
可以自定义Add的行为,比如客户端点击Add之后可以调用自定义的JS方法完成添加行操作

第一步:重写Render方法
  1.     Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
  2.         Dim add As Image
  3.         add = FpSpread1.FindControl("Add")
  4.         add.Attributes.Add("onclick", "return CustomAdd();")
  5.         MyBase.Render(writer)
  6.     End Sub
复制代码


第二步:在客户端添加CustomAdd方法
  1.     <script language="javascript" type="text/javascript">
  2.         function CustomAdd() {
  3.             var spread = document.getElementById("FpSpread1");
  4.             spread.CallBack("CustomAdd");
  5.         }
  6.     </script>
复制代码


第三步:在Spread的ButtonCommand事件中添加行
  1.     Protected Sub FpSpread1_ButtonCommand(sender As Object, e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
  2.         If e.CommandName = "CustomAdd" Then
  3.             FpSpread1.ActiveSheetView.RowCount += 5
  4.         End If
  5.     End Sub
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-4 10:28:00
7#
hezhilin 你好

使用以上方法可以解决该问题吗。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部