先将数据表从数据库中读到dataset对象,然后将dataset中的表的各个字段的内容分别显示在不同的textbox控件中,并将表中的关键字字段的内容添加到dropdownlist控件中,请问如何使用数据邦定,使得dropdownlist控件中的内容改变时,相应的表中的数据如何在每个textbox控件中显示并随之变化。只在控件的属性中邦定可以吗?情赐教。

解决方案 »

  1.   

    autopostback=true
    selectindexchanged()里写事件,给textbox赋值
      

  2.   

    不好意思,我是初学者。让我们举个例子吧,比如已经将oracle数据库中的一个名为“学生挡案”的数据表通过dataadapter控件生成了数据集dataset。“学生挡案”表包括“学号”,“姓名”,“性别”,“出生年月”四个字段,若干条记录,关键字为“学号”字段。现已将“学号”字段的内容通过数据绑定添加到了dropdownlist的下拉列表框内,然后在web窗体上加入三个texybox控件,分别用来显示其余三个字段的内容。我的问题是如何将dataset数据集中相应字段的内容绑定到textbox控件,当dropdownlist的属性设置为autopostback=true,改变dropdownlist的内容时,三个相应textbox的内容能随着下拉列表框的内容改变并显示出dataset中对应的内容。换句话说就是不用datagrid显示整表,而是用textbox分别显示。由于是初学,请尽量教我一些能少写代码的方法。不知道我说的清楚吗,请帮忙。
      

  3.   

    给你一个思路:
    设dropdownlist.selecteditem.text为姓名字段的值,
    dropdownlist.selecteditem.value为学号的值。Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
            
    dim strID as integer
    dim strSQL as string
    dim dv as new dataview
    strID=dropdownlist.selecteditem.value
    strSQL="select 学号,姓名,性别,出生年月 from yourdb where 学号=" & strID
    ....执行从数据库中读取数据操作,并将结果放入一个DATAVIEW中,如DV。
    txt1.text=dv.items(0).row("姓名")
    txt2.text=dv.items(0).row("性别")
    txt3.text=dv.items(0).row("出生年月")
    其中,txt1,txt2,txt3为你在web窗体上加入三个texybox控件。
    End Sub
      

  4.   

    Index 0 is not non-negative and below total rows count. 
    出现上述错误
      

  5.   

    你返回的数据记录为零.如果你是按我上面的思路作的话,先显示DV.count的数量,看看是否为零,或将你的代码贴出来.
      

  6.   

    把autopostback属性改成true
    然后在控件选项改变的触发事件selectindexchanged()中再给各个文本框付值.
      

  7.   

    给datable设个主健列。再根据下啦列表中选中的主建
    在datable中查找这一列,再邦定
      

  8.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not IsPostBack Then
                OleDbDataAdapter1.Fill(DataSet11)
                DropDownList1.DataBind()
            End If
            '在此处放置初始化页的用户代码
        End Sub    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
            Dim strID As Integer
            Dim strSQL As String
            Dim dv As New DataView()
            strID = DropDownList1.SelectedItem.Value
            strSQL = "select 学号,姓名,籍贯,备注 from cp2651 where 学号=" & strID
            TextBox1.Text = dv.Item(0).Item("备注")
    其中最后一行显示有错误
      

  9.   

    已经在控件属性设置了dropdownlist.selecteditem.text为姓名字段的值,
    dropdownlist.selecteditem.value为学号的值。
    autopostback属性改成true
      

  10.   

    这句TextBox1.Text = dv.Item(0).Item("备注")
    中的dv如何来的?你得用它获取数据库中的数据才行啊!先:
    在控件属性设置了dropdownlist.selecteditem.text为姓名字段的值,
    dropdownlist.selecteditem.value为学号的值。
    autopostback属性改成true且:暂时去掉page_load中的代码然后:Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
     Dim strID As Integer
     Dim strSQL As String
     Dim dv As New DataView()
     dim objCon as oledbConnection
     dim objDA as oledbdataAdapter
     dim dSet as new dataset
     
     strID = DropDownList1.SelectedItem.Value
     strSQL = "select 学号,姓名,籍贯,备注 from cp2651 where 学号=" & strID
     objCon=new oledbConnection("provider=microsoft.jet.oledb.4.0;data source=你的数据库路径及库名" objDA=new oledbdataAdapter(strSQL,objCon)
     objDA.fill(dSet)       
     dv=dset.tables(0).defaultview
     
     txt1.text=dv.items(0).row("姓名")
     txt2.text=dv.items(0).row("性别")
     txt3.text=dv.items(0).row("出生年月")
     txt4.text=dv.items(0).row("备注")end sub
      

  11.   

    哦,对了,page_load中应这样:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not IsPostBack Then
                DropDownList1.DataBind()
            End If
       End Sub
      

  12.   

    回复没有全看完其实也就是在第一次加载的时候,把关键字绑定到dropdownlist里
    在selectedchanged时,再根据selectvalue去数据库里查这个selectitem.text所对应的记录就是了,然后再把这条记录的各个字段值赋给各个textbox.text就是了。
      

  13.   

    autopostback=true
    selectindexchanged()里写事件,给textbox赋值
    dataset ds=new dataset();
    textbox.text=ds.tables[0]....//相应的字段值...
    即可..
      

  14.   

    请问上面的程序中datatextfield和datavaluefield的属性值能不能都设置成"姓名",为什么?
      

  15.   

    当然可以设成相同的字段,只要数据库里有,并不为什么,好像.NET出来就可以这样,呵呵,不知道怎么回答为什么