2013-09-24 2 views
0

Formview의 InsertItemTemplate 내에 업데이트 패널을 사용하려고합니다. 하나의 DropDownlist에서 "기타"를 선택하면 다른 드롭 다운 목록이 숨겨집니다. 이 업데이트 패널을 제거하면 문제없이 레코드가 생성됩니다. 그러나 DropDownList가 UpdatePanel에있을 때 삽입시 다음 오류가 발생합니다.업데이트 패널의 SQLDataSource에 데이터 바인딩시 오류가 발생했습니다.

Oracle.DataAccess.Client.OracleException : ORA-01008 : 모든 변수가 바인딩되지 않습니다.

나는 ASP.NET과 코드를 모두 포함하지 않았으므로, 다른 것을보고 싶으면 바운드 필드가 많고 데이터 유효성 검사가 많은지 물어보십시오.

다음
<asp:Formview 

     ID="fvJobs" 
     DataSourceID="fvSqlDataSource" 
     DataKeyNames="JOB_ID" 
     DefaultMode="Edit" 
     OnItemInserting="fvJobs_FileUpl" 
     OnItemInserted="fvJobs_ItemInserted" 
     OnItemupdating="fvJobs_FileUp2" 
     OnItemUpdated="fvJobs_ItemUpdated" 
     runat="server"> 


<asp:DropDownList ID="InsertLocList" 
             SelectedValue='<%# Bind("JOB_LOCATION") %>' 
             Autopostback="true" 
             CssClass="ddl" 
             OnSelectedIndexChanged="InsertLocList_IndexChanged" 
             RunAt="Server" > 
             <asp:ListItem Text="--Select One--" Value="-1" /> 
             <asp:ListItem Text="California" Value="CA" /> 
             <asp:ListItem Text="New York" Value="NY" /> 
             <asp:ListItem Text="Pennsylvania" Value="PA" /> 
             <asp:ListItem Text="Texas" Value="TX" /> 
             <asp:ListItem Text="Other" Value="O" /> 
             </asp:DropDownList></label> 


        <asp:UpdatePanel ID="UpdatePanel1" 
       UpdateMode="Conditional" 
       runat="server"> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="InsertLocList" /> 
       </Triggers> 
        <contentTemplate> 

        <span><asp:label id="InsertCatLbl" runat="server"><b>Subsidiary:</b></asp:label></span> 

         <asp:DropDownList ID="InsertCatList" 

             SelectedValue='<%# Bind("JOB_CATEGORY") %>' 
             CssClass="ddl" 
             RunAt="Server" > 
          <asp:ListItem Text="--Select One--" Value="-1" /> 

             <asp:ListItem Text="SRC" Value="SRC" /> 
             <asp:ListItem Text="FRN" Value="FRN" /> 
             <asp:ListItem Text="SUPDIST" Value="SUPDIST" /> 
             <asp:ListItem Text="Stream" Value="STREAM" /> 

             </asp:DropDownList> 
             </contentTemplate> 
             </asp:UpdatePanel> 

뒤에 코드의 일부입니다 :

Protected Sub InsertLocList_IndexChanged(sender As Object, e As EventArgs) 



Dim ddlLoc As DropDownList = _ 
     CType(fvJobs.FindControl("InsertLocList"), DropDownList) 

Dim ddlCat As DropDownList = _ 
     CType(fvJobs.FindControl("InsertCatList"), DropDownList) 

     Dim catLbl As Label = _ 
     CType(fvJobs.FindControl("InsertCatlbl"), Label) 


     If ddlLoc.SelectedValue = "O" 

     ddlCat.selectedvalue="SRC" 
     ddlCat.visible=false 
     catLbl.visible=false 



    else 

    ddlCat.visible = true 
    catLbl.visible = true 

    end if 



end sub 

이상한 것은 내가 UpdatePanel을 제거하면이 완벽하게 작동입니다 다음은 ASP.NET의 일부입니다. 업데이트 패널 내부의 Bind가 작동하지 않는 이유를 알 수 없습니다. 내가 생각할 수있는 모든면에서 Google 검색을 사용한다고 말하면서 비슷한 문제가있는 사람을 찾을 수없는 것 같습니다. 도움을 주시면 대단히 감사하겠습니다.

UPDATE 다음은 formview에 대한의 SqlDataSource입니다 :

<asp:SqlDataSource ID="fvSqlDataSource" 
      ConnectionString="<%$ ConnectionStrings:Oracle %>" 
      ProviderName="<%$ ConnectionStrings:Oracle.ProviderName %>" 
      SelectCommand="SELECT JOB_DESC, JOB_ID, JOB_CATEGORY, JOB_LOCATION, JOB_DATE_BEGIN, JOB_DATE_CLOSED, JOB_FILENAME, JOB_SHOW_INDIC from JOB_POSTING WHERE JOB_ID = :JOB_ID" 
      RunAt="server" 
      UpdateCommand="UPDATE JOB_POSTING SET JOB_DESC=:JOB_DESC, JOB_LOCATION=:JOB_LOCATION, JOB_CATEGORY=:JOB_CATEGORY, JOB_DATE_BEGIN=TO_DATE(:JOB_DATE_BEGIN, 'MM/DD/YYYY'), JOB_DATE_CLOSED=TO_DATE(:JOB_DATE_CLOSED, 'MM/DD/YYYY'), JOB_FILENAME=:JOB_FILENAME,JOB_SHOW_INDIC=:JOB_SHOW_INDIC WHERE JOB_ID=:JOB_ID" 

      InsertCommand="INSERT INTO JOB_POSTING(JOB_DESC, JOB_ID, JOB_LOCATION, JOB_CATEGORY, JOB_DATE_BEGIN, JOB_DATE_CLOSED, JOB_FILENAME, JOB_SHOW_INDIC) 
      VALUES 
     (:JOB_DESC, :JOB_ID, :JOB_LOCATION, :JOB_CATEGORY, TO_DATE(:JOB_DATE_BEGIN, 'MM/DD/YYYY'), TO_DATE(:JOB_DATE_CLOSED, 'MM/DD/YYYY'), :JOB_FILENAME, :JOB_SHOW_INDIC)" 
      > 

      <SelectParameters> 
      <asp:Parameter Name="JOB_ID" Type="String" DefaultValue="0" /> 
      </SelectParameters> 

     <UpdateParameters> 
     <asp:parameter Name="JOB_ID" Type="String" DefaultValue="0"/> 
     </UpdateParameters> 


</asp:SqlDataSource> 
+0

: 내가 사용하는 리소스에

다음
Protected Sub RoleSQLDataSource_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles RoleSQLDataSource.Updating e.Command.Parameters("@street_name").Value = street_nameTextBox.Text e.Command.Parameters("@street_type").Value = street_typeTextBox.Text e.Command.Parameters("@street_dir").Value = street_dirTextBox.Text e.Command.Parameters("@street_number").Value = street_numberTextBox.Text e.Command.Parameters("@street_apt").Value = street_aptTextBox.Text e.Command.Parameters("@city").Value = cityTextBox.Text e.Command.Parameters("@state").Value = stateTextBox.Text e.Command.Parameters("@zip").Value = zipTextBox.Text e.Command.Parameters("@district_id").Value = DistrictDropDownList.SelectedValue End Sub. 

되는 링크 :

또 다른 해결책은 뒤에 코드에 삽입/업데이트에 데이터를 바인딩하는 것입니다 표시된 마크 업과 관련하여 SqlDataSource는 어디에 있습니까? – jadarnel27

+0

.aspx 페이지 맨 아래에. – user2607172

+0

FormView를 사용하여 UpdatePanel에 삽입해야합니다. – jadarnel27

답변

0

내가 마지막으로이 작업을 얻었다. 좀 더 파고 가면 Formview의 EditItemTemplate 또는 InsertItemTemplate 내에서 UpdatePanel을 중첩 할 때 알려진 버그라는 것을 알았습니다. UpdatePanel 내부에 컨트롤

<InsertParameters> 
    <asp:Parameter Name="JOB_DESC" /> 
    <asp:Parameter Name="JOB_ID" />  
    <asp:Parameter Name="JOB_FILENAME" /> 
    <asp:Parameter Name="JOB_SHOW_INDIC" /> 
    <asp:Parameter Name="JOB_LOCATION" /> 
    <asp:ControlParameter ControlID="fvJobs$InsertCatList" Name="JOB_CATEGORY" /> 
     <asp:Parameter Name="JOB_DATE_BEGIN" /> 
    <asp:Parameter Name="JOB_DATE_CLOSED" /> 
    </InsertParameters> 

사용 ControlParameters :이 문제를 해결하는 방법은 두 가지가 있습니다, 나는의 SqlDataSource에서 DropDownList로 바인딩하는 ControlParameter을 사용했다.

http://forums.asp.net/t/1055525.aspx

http://connect.microsoft.com/VisualStudio/feedback/details/292398/formview-and-updatepanel-binding-behavior

관련 문제