我在webform上有两个下拉列表,这些下拉列表是从一个SQL db上的查询填充的。第一个填充制造商部件号,另一个填充制造商。 ddl在页面加载时正确绑定如下:
Imports System
Imports System.IO
Imports System.DateTime
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.ComponentModel
Imports System.Web.UI.Page
Imports System.Web.UI.WebControls
Public Class IQCRecord
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Dim dt1 As New DataTable
Dim MPN As String
Dim MFG As String
Dim con1 As New SqlConnection("Data Source=<datasource>")
Dim cmd1 As New SqlCommand("SELECT ROW_NUMBER() Over(order by [PREFER_49]) As Row, [MPNNUM_49] As MPN, [MPNMFG_49] As MFR, [PREFER_49] FROM [Mfg_Part_Master] WHERE ([PRTNUM_49] = @PRTNUM_49)", con1)
cmd1.CommandType = Data.CommandType.Text
cmd1.Parameters.AddWithValue("@PRTNUM_49", Request.QueryString("PARTID"))
con1.Open()
Dim da1 As New SqlDataAdapter
da1.SelectCommand = cmd1
da1.Fill(dt1)
If dt1.Rows.Count > 0 Then
For i As Integer = 0 To dt1.Rows.Count - 1
MPN = dt1.Rows(i)("MPNNUM_49").ToString()
ddlMPN.Items.Add(New ListItem(MPN))
MFG = dt1.Rows(i)("MPNMFG_49").ToString()
ddlMFG.Items.Add(New ListItem(MFG))
Next
ddlMPN.Items.Add(New ListItem("Wrong Part Rcv'd"))
End If
con1.Close()
End If
Dim dt As New DataTable
Dim con As New SqlConnection("Data Source=<different-datasource>")
Dim cmd As New SqlCommand("SP_GetIQCRecord", con)
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@IQCID", Request.QueryString("IQC ID"))
con.Open()
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
da.Fill(dt)
lblIqcId.Text = dt.Rows(0).Item("IQCID")
txtPrtNum.Text = dt.Rows(0).Item("PartID")
txtRev.Text = dt.Rows(0).Item("Rev")
txtIqcDate.Text = dt.Rows(0).Item("IQC DATE")
ddlMPN.SelectedValue = dt.Rows(0).Item("MPN")
ddlMFG.SelectedValue = dt.Rows(0).Item("MFG")
txtPO.Text = dt.Rows(0).Item("PO Num")
txtVendor.Text = dt.Rows(0).Item("VENDOR")
txtInspector.Text = dt.Rows(0).Item("Inspector")
lblInsID.Text = dt.Rows(0).Item("InsID")
txtLotQty.Text = dt.Rows(0).Item("LOT QTY")
txtSampSize.Text = dt.Rows(0).Item("SAMPLE SIZE")
txtQtyAcc.Text = dt.Rows(0).Item("QTY ACC")
txtQtyRej.Text = dt.Rows(0).Item("QTY REJ")
bolMRB.Checked = dt.Rows(0).Item("MRB?")
bolRej.Checked = dt.Rows(0).Item("REJ?")
bolpB.Checked = dt.Rows(0).Item("pB")
txtRecDC.Text = dt.Rows(0).Item("REC DATE CODE")
txtDateCode.Text = dt.Rows(0).Item("DATE CODE")
txtLotCode.Text = dt.Rows(0).Item("LOT CODE").ToString()
txtRemarks.Text = If(IsDBNull(dt.Rows(0).Item("REMARKS")), String.Empty, dt.Rows(0).Item("REMARKS").ToString())
con.Close()
End Sub
在这个绑定之后,我有另一个查询,它为单个检查记录提取数据并填充webform,包括选择这两个ddl的选定值。不幸的是,ddl没有选择与数据表中的文本匹配的值。我已经验证了dt.Rows(0).Item(“MFG”)和...(“MPN”)从app db获取值,并且这些值在绑定的ddl中。我没有收到任何错误,只是没有选择正确的值。它只是默认为列表中的第一个值。我在下面包含了我的.aspx和vb代码。
<table>
<tr>
<td class="style27">
<strong>Add/Edit Incoming Inspection Record</strong></td>
<td class="style27">
</td>
<td class="style27">
</td>
</tr>
<tr>
<td class="style27">
</td>
<td class="style27">
</td>
<td class="style27">
<asp:Label ID="lblIqcId" runat="server" Visible="False"></asp:Label>
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblPartId1" runat="server" Text="Part ID:" />
<asp:TextBox ID="txtPrtNum" runat="server" Height="21px" Width="178px" />
</td>
<td class="style27">
</td>
<td class="style27">
<asp:Label ID="lblRev" runat="server" Text="Rev:" />
<asp:TextBox ID="txtRev" runat="server" Height="21px" />
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblIqcDate" runat="server" Text="IQC Date:" />  
<asp:TextBox ID="txtIqcDate" runat="server" Height="21px" />
</td>
<td class="style27">
<asp:Label ID="lblMPN" runat="server" Text="MPN:" />  
<asp:DropDownList ID="ddlMPN" runat="server"
DataTextField="MPN" DataValueField="MPN" Height="21px"
Width="195px" >
</asp:DropDownList>
</td>
<td class="style27">
<asp:Label ID="lblMFR" runat="server" Text="MFR:" />  
<asp:DropDownList ID="ddlMFG" runat="server"
DataTextField="MFG" DataValueField="MFG" Height="21px"
Width="159px">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="style26">
<asp:Label ID="lblPO" runat="server" Text="PO Num:"></asp:Label>  
<asp:TextBox ID="txtPO" runat="server" Height="21px" Width="168px"></asp:TextBox>
</td>
<td class="style26">
<asp:Label ID="lblVendor" runat="server" Text="Vendor:"></asp:Label>  
<asp:TextBox ID="txtVendor" runat="server" Height="21px" Width="175px"></asp:TextBox>
</td>
<td class="style26">
<asp:Label ID="lblInspect" runat="server" Text="Inspector:"></asp:Label>  
<asp:TextBox ID="txtInspector" runat="server" Height="21px" Width="160px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblLotQty" runat="server" Text="Lot Qty:"></asp:Label>  
<asp:TextBox ID="txtLotQty" runat="server" Height="21px" Width="190px"></asp:TextBox>
</td>
<td class="style27">
<asp:Label ID="lblSampSize" runat="server" Text="Sample Size:"></asp:Label>  
<asp:TextBox ID="txtSampSize" runat="server" Height="21px" Width="170px"></asp:TextBox>
</td>
<td class="style27">
<asp:Label ID="lblInsID" runat="server" Visible="False"></asp:Label>
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblQtyAcc" runat="server" Text="Qty Acc.:"></asp:Label>  
<asp:TextBox ID="txtQtyAcc" runat="server" Height="21px" Width="190px"></asp:TextBox>
</td>
<td class="style27">
<asp:Label ID="lblQtyRej" runat="server" Text="Qty Rej:"></asp:Label>  
<asp:TextBox ID="txtQtyRej" runat="server" Height="21px" Width="170px"></asp:TextBox>
</td>
<td class="style27">
</td>
</tr>
<tr>
<td class="style27" align="center">
<asp:CheckBox ID="bolMRB" runat="server" style="text-align: right" Text="MRB?"
TextAlign="Left" />
</td>
<td class="style27" align="center">
<asp:CheckBox ID="bolRej" runat="server" style="text-align: right" Text="Rej?"
TextAlign="Left" />
</td>
<td class="style27" align="center">
<asp:CheckBox ID="bolpB" runat="server" style="text-align: right" Text="pB?"
TextAlign="Left" />
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblRecDC" runat="server" Text="Rec. Date Code:"></asp:Label>  
<asp:TextBox ID="txtRecDC" runat="server" Height="21px" Width="140px"></asp:TextBox>
</td>
<td class="style27">
<asp:Label ID="lblDateCode" runat="server" Text="DateCode:"></asp:Label>  
<asp:TextBox ID="txtDateCode" runat="server" Height="21px" Width="140px"></asp:TextBox>
</td>
<td class="style27">
<asp:Label ID="lblLotCode" runat="server" Text="Lot Code:"></asp:Label>  
<asp:TextBox ID="txtLotCode" runat="server" Height="21px" Width="140px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style28">
</td>
<td class="style28">
</td>
<td class="style28">
</td>
</tr>
<tr>
<td class="style27">
<asp:Label ID="lblRemarks" runat="server" Text="Remarks:"></asp:Label>
</td>
<td class="style27">
</td>
<td class="style27">
</td>
</tr>
<tr>
<td class="style27" colspan="3" rowspan="3">
<asp:TextBox ID="txtRemarks" runat="server" TextMode="MultiLine" Height="64px"
Width="722px"></asp:TextBox>
</td>
</tr>
</table>
con.Open()
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
da.Fill(dt)
lblIqcId.Text = dt.Rows(0).Item("IQCID")
txtPrtNum.Text = dt.Rows(0).Item("PartID")
txtRev.Text = dt.Rows(0).Item("Rev")
txtIqcDate.Text = dt.Rows(0).Item("IQC DATE")
ddlMFG.SelectedValue = dt.Rows(0).Item("MFG")
ddlMPN.SelectedValue = dt.Rows(0).Item("MPN")
txtPO.Text = dt.Rows(0).Item("PO Num")
txtVendor.Text = dt.Rows(0).Item("VENDOR")
txtInspector.Text = dt.Rows(0).Item("Inspector")
lblInsID.Text = dt.Rows(0).Item("InsID")
txtLotQty.Text = dt.Rows(0).Item("LOT QTY")
txtSampSize.Text = dt.Rows(0).Item("SAMPLE SIZE")
txtQtyAcc.Text = dt.Rows(0).Item("QTY ACC")
txtQtyRej.Text = dt.Rows(0).Item("QTY REJ")
bolMRB.Checked = dt.Rows(0).Item("MRB?")
bolRej.Checked = dt.Rows(0).Item("REJ?")
bolpB.Checked = dt.Rows(0).Item("pB")
txtRecDC.Text = dt.Rows(0).Item("REC DATE CODE")
txtDateCode.Text = dt.Rows(0).Item("DATE CODE")
txtLotCode.Text = dt.Rows(0).Item("LOT CODE").ToString()
txtRemarks.Text = If(IsDBNull(dt.Rows(0).Item("REMARKS")), String.Empty, dt.Rows(0).Item("REMARKS").ToString())
con.Close()
答案 0 :(得分:1)
这已经解决,但我不记得我在哪个论坛上获得了代码修订的帮助。为了别人的利益,我包括修正了我的问题的修订代码。
Dim selectedindex As Integer = 0
For index As Integer = 0 To dt1.Rows.Count - 1
If dt1.Rows(index).Item("MPN") = MPN1 Then
selectedindex = index
End If
Next
ddlMPN.SelectedIndex = selectedindex
ddlMFG.SelectedIndex = selectedindex
con1.Close()