【发布时间】:2011-04-28 13:41:32
【问题描述】:
我一直在尝试将选定的数据从两个下拉列表 (page1.aspx) 传递到 (page2.aspx) 我没有任何运气,因为在选择时似乎没有传递数据。请帮助,这似乎并不难,但我无法让它工作。在 (page2.aspx) 上,下拉列表中的数据将被传递到存储过程,所有结果都将在 gridview 中。
这是我的代码:
Page1.aspx
<asp:DropDownList ID="ddlState" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="ST_Code" DataValueField="ST_Code" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>"SelectCommand="SELECT [ST_Code] FROM [State]">
</asp:SqlDataSource> City: <asp:DropDownList ID="ddlCity" runat="server" DataSourceID="SqlDataSource2" DataTextField="RS_City" DataValueField="RS_City" />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>"SelectCommand="ListbyStateSPROC"SelectCommandType="StoredProcedure">`
<SelectParameters>
<asp:ControlParameter ControlID="ddlState" Name="State" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Button ID="Submit" runat="server" Text="Submit" />
</asp:Content>
Page1.aspx.vb
Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Web.UI.WebControls.DataGrid
Imports System.Web.UI.WebControls.DropDownList
Partial Public Class LiveEventSearch
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Public Sub ddlState_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
SqlDataSource2.SelectParameters.Clear()
SqlDataSource2.SelectParameters.Add(New Parameter("@State", DbType.String, ddlState.SelectedValue))
ddlCity.DataBind()
End Sub
Protected Sub ddlCity_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlCity.SelectedIndexChanged
End Sub
Protected Sub Submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit.Click
End Sub
End Class
Page2.aspx
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" Style="z-index: 100; left: 324px; position: absolute;
top: 226px">
<Columns>
<asp:BoundField DataField="Code" HeaderText="Code" ReadOnly="True" SortExpression="R_Code" />
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" SortExpression="R_Name" />
<asp:BoundField DataField="Number" HeaderText="Number" ReadOnly="True" SortExpression="RS_Number" />
<asp:BoundField DataField="Addr_1" HeaderText="Addr_1" ReadOnly="True" SortExpression="RS_Addr_1" />
<asp:BoundField DataField="City" HeaderText="City" ReadOnly="True" SortExpression="RS_City" />
<asp:BoundField DataField="State" HeaderText="State" ReadOnly="True" SortExpression="RS_State" />
<asp:BoundField DataField="RS_Zip" HeaderText="RS_Zip" ReadOnly="True" SortExpression="RS_Zip" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>"
SelectCommand="ListbyCityStSPROC" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:QueryStringParameter Name="City" QueryStringField="RS_City" Type="String" />
<asp:QueryStringParameter Name="State" QueryStringField="ST_Code" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:Content>
【问题讨论】:
-
您的 SqlDataSource2 在页面调用中是否仍然存在?不需要将其存储在会话对象中吗?
-
@Tony The Tiger ,SqlDataSource2 仅在 page1.aspx 上打开。有人告诉我,在这里使用 session 不是一个好主意,但你有什么想法?
标签: asp.net vb.net gridview drop-down-menu