2012-04-09 8 views
0

倍数が存在する場合、SQLテーブル内の特定のエントリを選択するオプションを作成しようとしています。下のリストは、テキストボックス(MOTxt)とボタン(GotMO)がMOからSQLを引き出すのをチェックするためのものです。入力された数値に基づいて、ページ上の他のテキストボックスにその行のデータが入力されます。これには例外があります。ここでは、各エントリに関連付けられた異なるデータとともにMONumberが2回以上入力されます。だから、私の状況です。テーブルに重複したMONumberが表示されている場合は、テキストボックスに更新のために最初に見つかったエントリが挿入されます。 見つかった各MONumberの 'Name'フィールドのエントリを表示し、そのリストから正しい名前が選択された後、その選択されたdatarowでテキストボックスを設定する動的なドロップダウンリスト(倍数が見つかった場合にのみ表示される)を作成します。 。ここでテーブルに複数のエントリが存在する場合、動的に表示される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

あなたが実行されている.NETのバージョンは何? – mutek

+0

これはすべて.net 4.0を使ってプログラムされています – user988265

答えて

0

私はこれをやっていた場合は、あなたのクリック機能で内容が別々の機能であるように、あなたが他の関数から簡単に思い出すことができるように、私は、コードを変更します。私は、symplicityを追加するために、データセットの代わりに強く型付けされたオブジェクトを使用します。また、モナスと名前の文字列を受け入れるために、 "Load Data"関数にいくつかの文字列引数を追加します。

だけで目に見えないDropDownListコントロールを作成し、行数がある場合に表示さに設定し、どのようなデータベースリターン(datatable.rows.countまたはStronglyTypedObject.count)

次の数を確認し、倍数を検索するには> 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 

うまくいけば、これは...あなたの方法であなたを取得します - MUTEK

+0

ありがとうございました:) 私は機能しています – user988265

関連する問題