此问题与我以前的问题有关
我目前正在制作一份注册表格,其中学生的所有详细信息都保存在文本文件中。
我使用文本文件填充了组合框。
这些值的格式例如是:(代码〜学校名称)SCH001~Saint 托马斯学院
这就是我在文本文件中保存详细信息的方式:
Dim firstname, lastname, email, mobile, level, currentschool, currenttrack, institution1, institution2, institution3, institution4, institution5, institution6, courses1, courses2, courses3, macaddress, eventcode, idseq, filename, logfiledirectory, targetdirectory, log, configdir, printschool As String
firstname = txtFName.Text
lastname = txtLName.Text
email = txtEmail.Text
mobile = txtMobile.Text
level = cmbLevel.Text
currenttrack = cmbCurrentTrack.Text
printschool = cmbCurrentSchool.Text
currentschool = cmbCurrentSchool.SelectedValue
institution1 = cmbInstitution1.SelectedValue
institution2 = cmbInstitution2.SelectedValue
institution3 = cmbInstitution3.SelectedValue
institution4 = cmbInstitution4.SelectedValue
institution5 = cmbInstitution5.SelectedValue
institution6 = cmbInstitution6.SelectedValue
courses1 = cmbCourse1.SelectedValue
courses2 = cmbCourse2.SelectedValue
courses3 = cmbCourse3.SelectedValue
If mobile = "" Then
mobile = "09000000000"
End If
If firstname = "" Or lastname = "" Or email = "" Or level = "" Or currentschool = "" Or currenttrack = "" Then
MessageBox.Show("Please enter the required fields!", "Registration", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
我有一个datagridview,其中显示了文本文件中所有已保存的详细信息。 这是我的datagridview的截图:
我想做什么:我想使用当前学校代码(参考图像)从源文本文件(我用来填充组合框的那个)中检索学校名称。我希望学校名称显示在datagridview中,而不是学校代码。 有可能这样做吗?
我希望你们明白我想说的是什么。 我是新来的。
答案 0 :(得分:2)
再次就像我上次回答一样,使用此功能:
Function FetchSchoolName(schoolcode As String, filepath As String) As String
Dim filecontents = File.ReadAllLines(filepath)
For Each line As String In filecontents
If (line.Contains(schoolcode.Trim())) Then
Return line.Split("~"c)(1)
End If
Next
Return String.Empty
End Function
示例文字条目:
sch001~abcinstitute
sch002~myacademy
sch003~someschoolname
然后传递学校代码(从datagridview获得)和最顶层函数中的filepath
MessageBox.Show(FetchSchoolName("sch002", "C:\Users\nobody\Desktop\somefile.txt"))
输出:
myacademy
现在关于你的DataGridView
,无论你在哪里填充(源绑定),都使用上面的方法
答案 1 :(得分:1)
如果你想产生与Nobody的答案相同的输出但没有循环,你可以使用LINQ,这也使用较少的代码行但实现相同的输出
Dim query = filecontents.Where(Function(x) x.Contains(schoolcode)).Select(Function(x) x.Split("~")(1)).FirstOrDefault
Return query.ToString()