2012-04-09 2 views
0

여러 항목이있는 경우 SQL 테이블에서 특정 항목을 선택하는 옵션을 만들려고합니다. 아래에 나열된 Sub는 텍스트 상자 (MOTxt) 및 MO (SQL에서 가져 오기 확인) 버튼 (GotMO)입니다. 입력 된 숫자에 따라 페이지의 다른 텍스트 상자에 해당 행의 데이터가 채워집니다. 여기에는 예외가 있습니다. 여기서 MONumber는 각 항목과 관련된 여러 데이터로 두 번 이상 입력됩니다. 그래서, 여기에 내 상황이있다. 테이블에 중복 된 MONumber가 있으면 업데이트를 위해 찾은 첫 번째 항목이 텍스트 상자에 채워집니다. 발견 된 각 MONumber에 대한 '이름'필드 항목을 표시 한 동적 드롭 다운 목록 (다중이있는 경우에만 표시됨)을 작성한 다음 해당 목록에서 올바른 이름을 선택한 다음 선택한 데이터row로 텍스트 상자를 채 웁니다 . 나는이 일을한다면테이블에 여러 항목이있는 경우 동적으로 표시된 DropDownList

Protected Sub GotMONum_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GotMO.Click 
    Dim da As New SqlDataAdapter 
    Dim ds As New DataSet 
    Dim MOLength As String = MOTxt.Text 
    Dim TieOffTemp As Integer 
    Dim QTYTemp As Integer 
    Dim MySelectQuery As String = "SELECT Name,ProdLine,NoRods,TieOffs FROM z_md_Outwrap WHERE MONumber = @MONum" 
    Dim myConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("GLoomisDBConnectionString").ConnectionString) 
    Dim myCommand As New SqlCommand(MySelectQuery, myConnection) 

    Message2.InnerHtml = "" 
    Message.InnerHtml = "" 
    If (Me.MOTxt.Text = "") Then 
     MsgBox("Please enter an MO Number to check") 
    Else 
     ' Fills fields based on MO Number 
     myCommand.Parameters.AddWithValue("@MONum", MOTxt.Text) 
     myConnection.Open() 
     da.SelectCommand = myCommand 
     da.Fill(ds, "tblData") 
     myConnection.Close() 

     If ds IsNot Nothing AndAlso ds.Tables.Count > 0 AndAlso ds.Tables(0).Rows.Count > 0 Then 
      NameTxt.Text = ds.Tables("tblData").Rows(0).Item("Name") 
      ProdLineTxt.Text = ds.Tables("tblData").Rows(0).Item("ProdLine") 
      NoRodsTxt.Text = ds.Tables("tblData").Rows(0).Item("NoRods") 
      TieOffsTxt.Text = ds.Tables("tblData").Rows(0).Item("TieOffs") 

      If Integer.TryParse(NoRodsTxt.Text, QTYTemp) Then 
       If Integer.TryParse(TieOffsTxt.Text, TieOffTemp) And TieOffTemp > 0.0 Then 
        AmountVal.Text = "$" & (QTYTemp * TieOffTemp * 0.18) 
       End If 
      End If 
     Else 
      Message.InnerHtml = "No MO# found as entered. Please check for errors." 
      Message.Style("color") = "red" 
     End If 
    End If 

End Sub 
+0

Mutek를? – mutek

+0

이것은 모두 .net 4.0을 사용하여 프로그래밍되었습니다 – user988265

답변

0

당신의 클릭 기능의 내용이 별도의 기능에 있도록 다른 기능에서 쉽게 불러올 수 있도록, 내가 코드를 변경할 것 : 여기 뒤에 내 코드의

. 추가 symplicity 데이터 집합 대신 강력하게 형식화 된 개체를 사용합니다. 또한 "Load Data"함수에 문자열 인수를 추가하여 monum 및 name 문자열을 받아들입니다.

단지의 수를 확인, 배수를 찾으려면 어떤 데이터베이스 반환 (datatable.rows.count 또는 StronglyTypedObject.count)

다음> 보이지 않는 DropDownList 컨트롤을 생성하고 행 개수 인 경우 가시로 설정 0

Linq를 사용하면 드롭 다운 목록을 바인딩하는 것이 상당히 간단합니다. 그런 다음 onselectedindexchanged 이벤트에 새로운 "load data"이벤트를 호출하여 선택한 번호를 넘버와 함께 전달합니다.

이 질문은 이미 많은 질문을 던지기 때문에 강하게 입력 된 객체를 채우지는 않겠지 만 다음과 같이 시작하는 것이 좋습니다 ... 다음 코드 예제는 사용하는 실제 코드로 받아 들여서는 안됩니다. .

Protected Sub GotMONum_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GotMO.Click 

    loaddata(monum.text, "") 
end sub 

protected sub loaddata(byval monum as string, byval name as string) 
    'your code here along with the following lines after: 
    Dim MySelectQuery As String = "" 
    myCommand.Parameters.AddWithValue("@MONum", MOTxt.Text) 

    if not string.isnullorempty(name) 
    MySelectQuery = "SELECT Name,ProdLine,NoRods,TieOffs FROM z_md_Outwrap WHERE MONumber = @MONum and Name = @name" 
    mycommand.Parameters.AddWithValue("@Name", Name) 
    else 
    MySelectQuery = "SELECT Name,ProdLine,NoRods,TieOffs FROM z_md_Outwrap WHERE MONumber = @MONum " 
    End If 
    'again, instead using a dataset, convert it to a list(of StronglyTypedObject) 

    if StronglyTypedObject.count > 0 then 
    dropdownlist.visible = true 
    dim dropdownlistcontents = (from a in StronglyTypedObject.AsEnumerable _ 
           Select a.Name).Distinct 
    dropdownlist.datasource = dropdownlistcontents 
    dropdownlist.databind 
    end if 
end sub 

Protected Sub DDL_OnSelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) handles dropdownlist.selectedindexchanged 
    loaddata(monum.text, "dropdownlist.selectedvalue") 
end sub 

는 희망이 ... 당신의 방법에 당신을 얻을 - 실행중인 .NET 버전은 무엇

+0

도움을 주셔서 감사합니다 :) 나는 작동하는 기능을 가지고 있습니다. – user988265

관련 문제