以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎样给临时表突出选中行背景设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196043)

--  作者:fvcfox
--  发布时间:2025/3/25 9:49:00
--  怎样给临时表突出选中行背景设置
Dim dtb As New DataTableBuilder("temp")生成了临时表,我在一个窗口的table1的数据源使用代码tb.DataSource = DataTables("temp")。现怎样代码设置选中行背景色

--  作者:有点蓝
--  发布时间:2025/3/25 9:50:00
--  
http://www.foxtable.com/webhelp/topics/1577.htm

DataTables("temp").SysStyles("CurrentRow").BackColor = Color.red

--  作者:fvcfox
--  发布时间:2025/3/25 11:30:00
--  
如果还想符合“选中=true”的行设成另一个背景色用什么代码,在“系统样式”中好像没合适可选
--  作者:有点蓝
--  发布时间:2025/3/25 11:34:00
--  
生成临时表的代码发上来
--  作者:fvcfox
--  发布时间:2025/3/25 11:53:00
--  
Dim tb As Table = Tables("导入凭证库财政记录_table1")

tb.StopRedraw()
Dim Book As New XLS.Book(e.Form.Controls("TextBox2").text)
Dim Sheet As XLS.Sheet = Book.Sheets(e.Sender.text)
For m1 As Integer = 1 To tb.DataTable.DataCols.Count 
    If tb.DataTable.DataCols.Contains("第" & m1 & "列") = True Then
        tb.DataTable.DataCols.Delete ("第" & m1 & "列")
    End If
Next
Dim dtb As New DataTableBuilder("temp")
dtb.AddDef("已导入", GetType(Boolean))
For m1 As Integer = 1 To Sheet.cols.Count
    dtb.AddDef("第" & m1 & "列", GetType(String), 255)
Next
dtb.Build()
tb.DataSource = DataTables("temp")

For n As Integer = 0 To Sheet.Rows.Count - 1
    Dim r As Row = tb.AddNew()
    For m As Integer = 0 To Sheet.cols.Count - 1
        r(tb.Cols(m + 1).name) = Sheet(n, m).Value
    Next
Next
If tb.rows.Count > 0 Then
    tb.Select(0, 0)
End If
tb.ResumeRedraw()
tb.Cols("已导入").Width = 45
tb.SetHeaderRowHeight(35, 25)
tb.DefaultRowHeight = 35

Dim st As String 
For i As Integer = tb.Cols.Count - 1 To 1 Step - 1
    st = "|第" & i & "列" & st
Next
e.Form.Controls("ComboBox3").ComboList = st.Remove(0, 1)
e.Form.Controls("ComboBox4").ComboList = st.Remove(0, 1)
e.Form.Controls("ComboBox5").ComboList = st.Remove(0, 1)
e.Form.Controls("ComboBox6").ComboList = st.Remove(0, 1)
e.Form.Controls("ComboBox7").ComboList = st.Remove(0, 1)
e.Form.Controls("ComboBox8").ComboList = st.Remove(0, 1)


希望,当这个表的“已导入”为true时变改其背景色,

--  作者:有点蓝
--  发布时间:2025/3/25 12:14:00
--  
每次设置DataSource 都是新表,没有必要浪费时间再删除一下列

Dim tb As Table = Tables("导入凭证库财政记录_table1")

tb.StopRedraw()
Dim Book As New XLS.Book(e.Form.Controls("TextBox2").text)
Dim Sheet As XLS.Sheet = Book.Sheets(e.Sender.text)

Dim dtb As New DataTableBuilder("temp")
dtb.AddDef("已导入", GetType(Boolean))
For m1 As Integer = 1 To Sheet.cols.Count
    dtb.AddDef("第" & m1 & "列", GetType(String), 255)
Next
tb.DataSource = dtb.BuildDataSource ()
tb.DataTable.GlobalHandler.DrawCell=true ’http://www.foxtable.com/webhelp/topics/0671.htm
tb.DataTable.AddUserStyle("a"Color.RedColor.black) ‘http://www.foxtable.com/webhelp/topics/1579.htm
……其他代码

然后说道全局表事件DrawCell事件写代码
If e.Row("已导入")=true Then
    e.Style = "a"

End If