问:
我想让spread响应CellChange之类的事件,就是在单元格的值一变化,但焦点没有离开单元格时就响应,请问能不能做到?
答:
Spread for web没有类似CellChanged的事件。因为当server端知道client单元格的值变化,才可能做出反应。所以你可以想办法调用SaveChanges方法来通知service端,然后UpdateCommand事件就会发出。你可以在这个时候做些其他事情。
不过这个办法不一定对你有帮助。因为还不是很清楚你的具体用例。可不可以说的详细些。比如,你有两个Combo。第一个是各个省的名字,第二个是根据第一个选择的省不同,而列出该省所有的市。等等。
不过这个办法不一定对你有帮助。因为还不是很清楚你的具体用例。可不可以说的详细些。比如,你有两个Combo。第一个是各个省的名字,第二个是根据第一个选择的省不同,而列出该省所有的市。等等。
问:
首先谢谢您的指导,我的需求就是像您说的那样:两个ComboBox,第一个是各个省的名字,第二个是根据第一个选择的省不同,而列出该省所有的市。不知道按您上面的方法能不能实现,而且我还想问一下:SaveChanges方法是怎么调用的?
答:
关于调用SaveChanges,你可以在client端放个Submit button。用户选完了省,让他按submit。
不过对于你这个case,我刚好有个sample,使用AJAX。你目前用的是Spread 3,应该是支持AJAX的。
server端
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (IsPostBack) Then Return
Dim c1 As New FarPoint.Web.Spread.ComboBoxCellType
c1.Items = New String() {"a", "b", "c"}
FpSpread1.Sheets(0).Columns(0).CellType = c1
End Sub
Protected Sub FpSpread1_UpdateCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.UpdateCommand
Dim c As New FarPoint.Web.Spread.ComboBoxCellType
If Not (ReferenceEquals(e.EditValues(0), FarPoint.Web.Spread.FpSpread.Unchanged)) Then
Select Case e.EditValues(0)
Case "a"
c.Items = New String() {"a1", "a2", "a3"}
Case "b"
c.Items = New String() {"b1", "b2", "b3"}
Case "c"
c.Items = New String() {"c1", "c2", "c3"}
End Select
FpSpread1.Sheets(0).Cells(e.CommandArgument, 1).CellType = c
End If
End Sub
client端
function window.onload() {
FpSpread1.OnEditStopped=cellChanged;
}
function cellChanged() {
FpSpread1.UpdatePostbackData();
FpSpread1.CallBack("Update");
}
不过对于你这个case,我刚好有个sample,使用AJAX。你目前用的是Spread 3,应该是支持AJAX的。
server端
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (IsPostBack) Then Return
Dim c1 As New FarPoint.Web.Spread.ComboBoxCellType
c1.Items = New String() {"a", "b", "c"}
FpSpread1.Sheets(0).Columns(0).CellType = c1
End Sub
Protected Sub FpSpread1_UpdateCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.UpdateCommand
Dim c As New FarPoint.Web.Spread.ComboBoxCellType
If Not (ReferenceEquals(e.EditValues(0), FarPoint.Web.Spread.FpSpread.Unchanged)) Then
Select Case e.EditValues(0)
Case "a"
c.Items = New String() {"a1", "a2", "a3"}
Case "b"
c.Items = New String() {"b1", "b2", "b3"}
Case "c"
c.Items = New String() {"c1", "c2", "c3"}
End Select
FpSpread1.Sheets(0).Cells(e.CommandArgument, 1).CellType = c
End If
End Sub
client端
function window.onload() {
FpSpread1.OnEditStopped=cellChanged;
}
function cellChanged() {
FpSpread1.UpdatePostbackData();
FpSpread1.CallBack("Update");
}
产品介绍和下载地址:http://www.componentcn.com/html/biaogekongjian_124_3920.html