ASP webforms:如何使用下拉框异步显示相关数据?
ASP webforms: How to use drop-down to show related data in textboxes asynchronously?
我正在 asp.net webforms w an SQL 服务器后端开发一个应用程序。我有一个包含“机构名称”的下拉列表。当我从下拉列表中 select 代理商时,它会使用地址、phone 号码等相关数据填充其他 7 个只读文本框。目前,当 SelectedIndexChanged 事件触发时,这通过使用 ADO 记录集来工作对于下拉菜单,但它还会将页面发回并重新加载所有内容,这不是我想要的。
screenshot of my webpage
我知道在 ASP 网络表单中有 ajax 控件,例如 updatepanel 和触发器,它们应该可以帮助我设置异步事件以在不重新加载页面的情况下提取此数据。我该如何实施?使用 aspx HTML 文件中的 SQL 数据源标记填充下拉列表。
这是代码隐藏文件中的当前代码:
Protected Sub cboRprtngAgncy_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboRprtngAgncy.SelectedIndexChanged
If cboRprtngAgncy.SelectedValue <> "" Then
'Fill in the agency details
Dim Cnn As SqlConnection
Dim Cmd As SqlCommand
Dim Rdr As SqlDataReader
Dim strRprtdPhn As String
Dim strAltPhn As String
'Set the objects and parameters up
Cnn = New SqlConnection
'Connection string deleted for security purposes.
Cmd = New SqlCommand
Cmd.CommandType = Data.CommandType.StoredProcedure
'Populate all the fields from the decedent table
Cmd.CommandText = "spAgncyDtls_Slct"
Cmd.Parameters.Add("@AgncyNmID", Data.SqlDbType.Int).Value = IIf(Trim(cboRprtngAgncy.SelectedValue) = "", System.DBNull.Value, Trim(cboRprtngAgncy.SelectedValue))
'Execute the objects and retrieve the decedent data
Cnn.Open()
Cmd.Connection = Cnn
Rdr = Cmd.ExecuteReader
Rdr.Read()
strRprtdPhn = Rdr("AgncyPhnMn").ToString
If strRprtdPhn <> "" Then strRprtdPhn = Left(strRprtdPhn, 3) + "-" + Mid(strRprtdPhn, 4, 3) + "-" + Right(strRprtdPhn, 4)
strAltPhn = Rdr("AgncyPhnAlt").ToString
If strAltPhn <> "" Then strAltPhn = Left(strAltPhn, 3) + "-" + Mid(strAltPhn, 4, 3) + "-" + Right(strAltPhn, 4)
txtRprtdPhnNmbr.Text = strRprtdPhn
txtRprtdAltPhn.Text = strAltPhn
txtRprtngAddrss.Text = Rdr("AgncyStrt").ToString
txtRprtngZp.Text = Rdr("AgncyZp").ToString
txtRprtngCty.Text = Rdr("AgncyCty").ToString
txtRprtngStt.Text = Rdr("AgncyStt").ToString
txtAgncyNmbr.Text = Rdr("AgncyFx").ToString
Rdr.Close()
If Cnn.State = Data.ConnectionState.Open Then Cnn.Close()
Cnn.Dispose()
Cmd.Dispose()
End If
End Sub
下面是 aspx HTML文件中的代码:
<label>Reporting Agency</label><br />
<asp:DropDownList ID="cboRprtngAgncy" runat="server" DataSourceID="sqldsAgncyNms" DataTextField="AgncyNm" DataValueField="AgncyNmID" Width="350px" Font-Names="Arial" Font-Size="16px" Font-Bold="True" TabIndex="25" AutoPostBack="True" Enabled="true" /><br />
<label>Agency #</label><br />
<asp:TextBox ID="txtAgncyNmbr" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="26" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" CssClass="border-field" /><br />
</div>
<div class="col-7">
<label>Reported By</label><br />
<asp:TextBox ID="txtRprtdBy" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="27" ReadOnly="False" BackColor="#ffffff" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#000000" /><br />
<label>Reported Phone</label><br />
<asp:TextBox ID="txtRprtdPhnNmbr" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="28" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>Alternate Phone</label><br />
<asp:TextBox ID="txtRprtdAltPhn" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="29" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" CssClass="border-field" /><br />
</div>
<br />
</div>
<br />
<div class="row">
<div class="col-7">
<label>Reporting Address</label><br />
<asp:TextBox ID="txtRprtngAddrss" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="500px" TabIndex="30" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>City</label><br />
<asp:TextBox ID="txtRprtngCty" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="31" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>State</label><br />
<asp:TextBox ID="txtRprtngStt" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="32" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>Zip Code</label><br />
<asp:TextBox ID="txtRprtngZp" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="33" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" />
</div>
我想我需要使用 javascript 来设置一个异步事件来获取数据并将其扔到那 7 个文本框中。我对 Javascript 很熟悉,但还是个新手,谁能告诉我如何设置它?
提前致谢。
我最终使用了三种不同的方法来处理 运行 异步事件:ASP 网络表单的内置控件 UpdatePanel,使用 API 的 javascript 事件,以及javascript 事件使用页面代码隐藏文件中公开的方法。我会在不久的将来尝试 post 这些方法的示例。
我正在 asp.net webforms w an SQL 服务器后端开发一个应用程序。我有一个包含“机构名称”的下拉列表。当我从下拉列表中 select 代理商时,它会使用地址、phone 号码等相关数据填充其他 7 个只读文本框。目前,当 SelectedIndexChanged 事件触发时,这通过使用 ADO 记录集来工作对于下拉菜单,但它还会将页面发回并重新加载所有内容,这不是我想要的。
screenshot of my webpage
我知道在 ASP 网络表单中有 ajax 控件,例如 updatepanel 和触发器,它们应该可以帮助我设置异步事件以在不重新加载页面的情况下提取此数据。我该如何实施?使用 aspx HTML 文件中的 SQL 数据源标记填充下拉列表。
这是代码隐藏文件中的当前代码:
Protected Sub cboRprtngAgncy_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboRprtngAgncy.SelectedIndexChanged
If cboRprtngAgncy.SelectedValue <> "" Then
'Fill in the agency details
Dim Cnn As SqlConnection
Dim Cmd As SqlCommand
Dim Rdr As SqlDataReader
Dim strRprtdPhn As String
Dim strAltPhn As String
'Set the objects and parameters up
Cnn = New SqlConnection
'Connection string deleted for security purposes.
Cmd = New SqlCommand
Cmd.CommandType = Data.CommandType.StoredProcedure
'Populate all the fields from the decedent table
Cmd.CommandText = "spAgncyDtls_Slct"
Cmd.Parameters.Add("@AgncyNmID", Data.SqlDbType.Int).Value = IIf(Trim(cboRprtngAgncy.SelectedValue) = "", System.DBNull.Value, Trim(cboRprtngAgncy.SelectedValue))
'Execute the objects and retrieve the decedent data
Cnn.Open()
Cmd.Connection = Cnn
Rdr = Cmd.ExecuteReader
Rdr.Read()
strRprtdPhn = Rdr("AgncyPhnMn").ToString
If strRprtdPhn <> "" Then strRprtdPhn = Left(strRprtdPhn, 3) + "-" + Mid(strRprtdPhn, 4, 3) + "-" + Right(strRprtdPhn, 4)
strAltPhn = Rdr("AgncyPhnAlt").ToString
If strAltPhn <> "" Then strAltPhn = Left(strAltPhn, 3) + "-" + Mid(strAltPhn, 4, 3) + "-" + Right(strAltPhn, 4)
txtRprtdPhnNmbr.Text = strRprtdPhn
txtRprtdAltPhn.Text = strAltPhn
txtRprtngAddrss.Text = Rdr("AgncyStrt").ToString
txtRprtngZp.Text = Rdr("AgncyZp").ToString
txtRprtngCty.Text = Rdr("AgncyCty").ToString
txtRprtngStt.Text = Rdr("AgncyStt").ToString
txtAgncyNmbr.Text = Rdr("AgncyFx").ToString
Rdr.Close()
If Cnn.State = Data.ConnectionState.Open Then Cnn.Close()
Cnn.Dispose()
Cmd.Dispose()
End If
End Sub
下面是 aspx HTML文件中的代码:
<label>Reporting Agency</label><br />
<asp:DropDownList ID="cboRprtngAgncy" runat="server" DataSourceID="sqldsAgncyNms" DataTextField="AgncyNm" DataValueField="AgncyNmID" Width="350px" Font-Names="Arial" Font-Size="16px" Font-Bold="True" TabIndex="25" AutoPostBack="True" Enabled="true" /><br />
<label>Agency #</label><br />
<asp:TextBox ID="txtAgncyNmbr" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="26" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" CssClass="border-field" /><br />
</div>
<div class="col-7">
<label>Reported By</label><br />
<asp:TextBox ID="txtRprtdBy" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="27" ReadOnly="False" BackColor="#ffffff" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#000000" /><br />
<label>Reported Phone</label><br />
<asp:TextBox ID="txtRprtdPhnNmbr" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="28" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>Alternate Phone</label><br />
<asp:TextBox ID="txtRprtdAltPhn" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="29" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" CssClass="border-field" /><br />
</div>
<br />
</div>
<br />
<div class="row">
<div class="col-7">
<label>Reporting Address</label><br />
<asp:TextBox ID="txtRprtngAddrss" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="500px" TabIndex="30" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>City</label><br />
<asp:TextBox ID="txtRprtngCty" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="31" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>State</label><br />
<asp:TextBox ID="txtRprtngStt" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="32" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" /><br />
<label>Zip Code</label><br />
<asp:TextBox ID="txtRprtngZp" runat="server" Font-Names="Arial" Font-Size="12px" Font-Bold="True" Width="150px" TabIndex="33" ReadOnly="true" BackColor="#E8EDEE" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" ForeColor="#727372" />
</div>
我想我需要使用 javascript 来设置一个异步事件来获取数据并将其扔到那 7 个文本框中。我对 Javascript 很熟悉,但还是个新手,谁能告诉我如何设置它?
提前致谢。
我最终使用了三种不同的方法来处理 运行 异步事件:ASP 网络表单的内置控件 UpdatePanel,使用 API 的 javascript 事件,以及javascript 事件使用页面代码隐藏文件中公开的方法。我会在不久的将来尝试 post 这些方法的示例。