大约5年没有做任何编程,所以在这个上有点生疏。
我正在建立一个资产管理系统,以使我的工作更轻松,但我正在努力解决一些事情。
到目前为止,我所拥有的是数据库设置并填充了少量数据,主网站本身已构建,并且基本选择语句指向当前系统中针对该特定页面/搜索的任何数据的网格视图还有一个insert语句,它根据该页面上的表单上的数据填充相关表。所有这些功能都在无缝地工作。
我遇到的问题是需要为insert语句填充的一个字段需要根据从同一表单的下拉框中进行的选择来填充。
即
正在注册到系统中的资产具有资产类型(类型详细信息包含在父表Asset_Type中)表单有3个字段用于显示目的(其中一个字段需要返回资产的条目来自表单的数据库中的表,这是有效的),取自Asset_Type表,其他字段仅与Asset表本身相关。
我想要实现的是用户进入页面并看到注册的资产列表(这是有效的)然后他们需要通过填写页面下方的表格来添加新资产(对于在这个表单上写入DB,这是一个下拉菜单,用于查询Asset_Type表并允许用户按名称选择Type(这可以)
我现在需要工作的是根据选择的资产类型填充其他2个字段。
这些字段目前是表单中的文本框,但如果需要可以更改。
我在页面后面的代码如下:
Protected Sub Name_Model_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Name_Model.SelectedIndexChanged
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("AssetManagementConnectionString").ToString())
Dim cmd As New SqlCommand()
cmd.Connection = conn
cmd.CommandText = "SELECT [ID], [Name_Model], [Description_Spec] FROM [Asset_Type] WHERE ([ID] = @ID)"
cmd.CommandType = CommandType.Text
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
If reader.HasRows Then
While (reader.Read())
{
Type_ID.text = (reader["ID"].tostring())
Name_Model.text = (reader["Name_Model"].tostring())
Description_Spec.text = reader["Description_Spec"].tostring
}
End While
End If
End Using
End Sub
答案 0 :(得分:0)
所以我不确定史蒂夫的评论,但我知道他对基于我自己回答的问题更加熟悉VB。不过我会提出一些建议。
所以“下降”通常有两个与之相关的数据。
一个DisplayMember
和一个ValueMember
(如果它是一个ComboBoxColumn也是SelectedValue
)
我相信你也可以参考。
然后,您可以使用If Then
或者您打算使用该值,随意使用该值。
assetValue = YourComboBox.DisplayMember.ToString
YourTextBox.Text = assetValue
或
If ComboBox.ValueMember = YourIndex Then
assetValue = Whatever
ElseIf
....
End If
尝试一下,让我知道你得到了什么。我只是把想法扔到那里。