ASP.NET Заполнить список веб-форм на основе выбора из других значений списка и базы данных + объявить ошибку скалярной переменной - PullRequest
1 голос
/ 22 февраля 2011

Я хочу, чтобы список автоматически заполнял почтовые индексы после выбора состояния из другого списка на основе значений, определенных в таблице state_zipcode_plans из базы данных.Пример: если выбрано состояние FL, загрузить zip_codes (332, 333, 334, 335), где state_code = selected_state_code (FL), в список

Я получаю сообщение об ошибке: необходимо объявить скалярную переменную @statecode с помощьюсуществующий код.

Я думал, может быть, я должен где-нибудь поместить Request.Form ("код_состояния")?Мой друг предложил добавить строку в код CS, но я не уверен насчет синтаксиса.Как мне заставить это работать?

Вот код, который у меня есть:

<asp:ListBox ID="ST_Select_ListBox" runat="server" DataSourceID="SqlDataSource1" 
DataTextField="state_code" DataValueField="state_code" CssClass="style7"></asp:ListBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:PriceFinderConnectionString %>" 
SelectCommand="SELECT [state_code] FROM [state_code] ORDER BY [state_code]">
    <SelectParameters>
        <asp:FormParameter DefaultValue="NULL" FormField="state_code" Name="state_code" Type="String" />
    </SelectParameters>

             <td class="style2"> <span class="style7">Select Zip (auto-populated based on selected State)
                                </span>
                                <br class="style7" />
<br class="style7" />
<asp:ListBox ID="Zip_Select_ListBox" runat="server" DataSourceID="SqlDataSource2" CssClass="style7">
</asp:ListBox>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:PriceFinderConnectionString %>" 
    SelectCommand="SELECT DISTINCT [zip_code] FROM [state_zipcode_plans] WHERE ([state_code] = @state_code)" Request.Form("state_code")>
    <SelectParameters>
        <asp:FormParameter DefaultValue="NULL" FormField="zip_code" Name="zip_code" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

Вот код в C #:

    protected void Search_STZipPlan_Button_Click(object sender, EventArgs e)
    {

        SqlConnection conn = new SqlConnection("Server=localhost;Database=PriceFinder;Integrated Security=SSPI");
        conn.Open();

        SqlCommand searchPF = new SqlCommand("up_SelectPriceFinderResults", conn); //calling stored procedure 
        searchPF.CommandType = CommandType.StoredProcedure;


        SqlConnectionStringBuilder builder =  new SqlConnectionStringBuilder();
        builder["Data Source"] = "SqlDataSource1";
        builder["integrated Security"] = true;
        builder["Initial Catalog"] = "PriceFinder;NewValue=Bad";
        Console.WriteLine(builder.ConnectionString);

        SqlParameter state_code = new SqlParameter("state_code", SqlDbType.VarChar, 3); 
        SqlParameter zip_code = new SqlParameter("zip_code", SqlDbType.VarChar, 6); 
        SqlParameter plan_name = new SqlParameter("plan_name", SqlDbType.VarChar, 16);

        // SqlDataReader reader = SqlCommand.ExecuteReader();
        // Search_Results_GridView.DataSource = reader;

        Search_Results_GridView.DataBind();

        conn.Close();

    }

1 Ответ

0 голосов
/ 22 февраля 2011

Проблема связана с SQL. Вероятно, есть ошибка в хранимой процедуре

 up_SelectPriceFinderResults

Поскольку я не вижу исходный код хранимой процедуры, я предполагаю, что вы забыли объявить параметр или переменную. Вам нужно объявить переменную @state_code внутри вашей хранимой процедуры:

 declare @state_code varchar(3)

или как параметр хранимой процедуры. В любом случае, проверьте исходный код хранимой процедуры:

exec sp_helptext up_SelectPriceFinderResults
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...