以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何让comlist 只显示最后一个用户名称?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=73358)

--  作者:liuxianjie1980
--  发布时间:2015/8/18 0:13:00
--  [求助]如何让comlist 只显示最后一个用户名称?

初始的afterload事件代码如下

Dim str As String =GetConfigValue("保存的用户", "")
e.Form.Controls("UserName").ComboList = str

If str>"" Then
    e.Form.Controls("UserName").SelectedIndex = 0 

    Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow
    cmd.C
    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" & e.Form.Controls("UserName").value & "\'"
    dt = cmd.ExecuteReader
    dr = dt.DataRows(0)
    e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))
End If

 

 

但是随着登录用户的增多,下拉框里面的用户名越来越多了,因此,为了只显示最后一个用户名,改动了一下,

改动后的afterload事件代码如下:

Dim str As String =GetConfigValue("保存的用户", "")
e.Form.Controls("UserName").ComboList = str.split("|")(0)
If str>"" Then
\'    e.Form.Controls("UserName").SelectedIndex = 0 ,这句是原来的代码,在此已注释
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow
    cmd.C
    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" & e.Form.Controls("UserName").value & "\'"
    dt = cmd.ExecuteReader
    dr = dt.DataRows(0)
    e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))
End If

 

运行错误提示:索引超出了数组界限。

 

初步怀疑就是红色部分出了问题,怎么改动?请教!

[此贴子已经被作者于2015/8/18 0:34:18编辑过]

--  作者:liuxianjie1980
--  发布时间:2015/8/18 0:28:00
--  

补充说明:UserName控件有一个初始值“请输入用户名”。

[此贴子已经被作者于2015/8/18 0:29:34编辑过]

--  作者:大红袍
--  发布时间:2015/8/18 9:09:00
--  

If str>"" Then

    e.Form.Controls("UserName").ComboList = str.split("|")(0)


--  作者:liuxianjie1980
--  发布时间:2015/8/18 14:46:00
--  

Dim str As String =GetConfigValue("保存的用户", "")
e.Form.Controls("UserName").ComboList = str
If str>"" Then
    e.Form.Controls("UserName").Combolist = str.split("|")(0)
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow
    cmd.C
    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" & e.Form.Controls("UserName").value & "\'"
    dt = cmd.ExecuteReader
    dr = dt.DataRows(0)
    e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))
End If

 

是这样改撒,但是还是同样的问题


--  作者:liuxianjie1980
--  发布时间:2015/8/18 14:48:00
--  
我觉得问题就出在给combolist赋值这句代码上了,但是怎么解决就不清楚了
--  作者:大红袍
--  发布时间:2015/8/18 14:50:00
--  

加入msgbox调试。

 

http://www.foxtable.com/help/topics/1485.htm

 


--  作者:大红袍
--  发布时间:2015/8/18 14:53:00
--  

    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" & e.Form.Controls("UserName").value & "\'"
    dt = cmd.ExecuteReader
    dr = dt.DataRows(0)
    e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))

 

改成

 

    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" &  str.split("|")(0) & "\'"
    dt = cmd.ExecuteReader

    If dt.DataRows.Count > 0 Then
        dr = dt.DataRows(0)
        e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))

    End If

[此贴子已经被作者于2015/8/18 14:53:51编辑过]

--  作者:liuxianjie1980
--  发布时间:2015/8/18 15:57:00
--  

删除一下代码,就Ok了

 

 Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow
    cmd.C
    cmd.CommandText = "Select * Fr om {用户管理表} Where [用户名] = \'" & e.Form.Controls("UserName").value & "\'"
    dt = cmd.ExecuteReader
    dr = dt.DataRows(0)
    e.Form.Controls("UserPhoto").Image = GetImage(projectPath & "Attachments/" & dr("用户照片"))


--  作者:liuxianjie1980
--  发布时间:2015/8/18 16:05:00
--  

谢谢!