从下拉列表中传递数据

时间:2011-04-28 13:41:32

标签: asp.net vb.net gridview drop-down-menu

我一直在尝试将选定数据从两个下拉列表(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" />
    &nbsp;

</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>

1 个答案:

答案 0 :(得分:0)

有效地,ASP.NET应用程序中的每个页面本身就像一个应用程序,事物不会遍历页面,因此您需要实现一个持有SQLDataSource的类,以便可以跨页面调用它或者您需要实现一些方法来跨页面复制数据。

您还可以使用FindControl函数跨页面查找SQLDataSource:

SqlDataSource sql = (SqlDataSource)Page.Master.Findcontrol("SqlDataSource1");