2011-02-22 4 views
1

state_zipcode_plans 테이블에 정의 된 값에 따라 다른 목록 상자에서 상태를 선택하면 목록 상자에 자동 채우기 코드가 표시됩니다. 데이터베이스 FL의 상태가 선택되면,리스트 박스에 STATE_CODE = selected_state_code (FL)이ASP.NET 다른 Listbox 및 데이터베이스 값의 선택을 기반으로 Webforms Listbox 채우기 + 스칼라 변수 오류 선언

내가 오류 여기서 부하 zip_codes는 (332, 333, 334, 335) : EX가 가진 스칼라 변수 @statecode 선언해야 기존 코드.

어딘가에 Request.Form ("state_code")을 넣어야한다고 생각했습니다. 친구가 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(); 

    } 
+0

가능한 중복 : 어쨌든, 저장 프로 시저의 소스 코드를 확인/5031458/vb-net-to-c-gridview-for-a-listbox-wa-stored-procedures에서 검색) –

+0

이 중복 된 질문이 아닙니까? –

+0

@ 존 손 더스 : 아니오, 다른 질문이지만 같은 프로젝트에 있습니다. 이전 질문은 C#에서 코드 숨김 구문을 작성하는 방법을 묻는 것이었고 그 시점에서 저장 프로 시저를 사용하지 않았습니다. 이 질문에, 나는 오류에 대해 묻고있다. 스칼라 변수를 선언해야한다. –

답변

0

문제는 SQL 관련이

여기 내가 가지고있는 코드입니다. 아마 내가 저장 프로 시저의 소스 코드를 참조하지 않기 때문에, 당신이 매개 변수 또는 변수를 선언하는 것을 잊었다 가정 저장 프로 시저

up_SelectPriceFinderResults 

에 문제가 있습니다. 스토어드 프로 시저 내 변수 @state_code를 선언해야합니다 :

declare @state_code varchar(3) 

또는 저장 프로 시저의 매개 변수로 선언해야합니다. [- GRIDVIEW 코드 뒤에 목록 상자 WA 저장 프로 시저에서 검색 VB.NET TO C 번호 (http://stackoverflow.com/questions

exec sp_helptext up_SelectPriceFinderResults 
+0

답장을 보내 주셔서 감사합니다. 코드 숨김에 @state_code varchar (3)을 어디에 넣어야합니까? 명확히하기 위해, 여기에 예제가 있습니다 : FL의 상태가 목록 상자에서 선택되면 zip_codes (332, 333, 334, 335)는 우편 번호 목록 상자에로드됩니다. state_code (from table) = selected_state_code (목록 상자에서) –

+0

"저장 프로 시저"에서 SQL Server 인스턴스의 SQL 코드를 보거나 편집 할 수 있습니다. – splattne