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>
: 내가 사용하는 리소스에
다음되는 링크 :
는또 다른 해결책은 뒤에 코드에 삽입/업데이트에 데이터를 바인딩하는 것입니다 표시된 마크 업과 관련하여 SqlDataSource는 어디에 있습니까? – jadarnel27
.aspx 페이지 맨 아래에. – user2607172
FormView를 사용하여 UpdatePanel에 삽입해야합니다. – jadarnel27