내 ASPX 파일에서 ASP : formview 내부에 InsertItemTemplate이 있습니다. 템플릿은 asp : textbox, droplists 등으로 만들어진 양식으로 구성됩니다. 양식은 사용자 입력을 받아 SQL 서버의 저장 프로 시저로 전달하여 데이터를 삽입합니다.템플릿의 ASP 요소가 현재 컨텍스트에 존재하지 않는 이유는 무엇입니까?
SP를 별도로 테스트했는데 정상적으로 작동합니다. 내 문제는 ASP 폼뷰와 템플릿이 나에게 의미가 없다는 것이다. 필드의 데이터 입력이 존재하지 않으므로 SP로 전달되지 않으므로 아무 것도 삽입되지 않습니다. 내 코드 숨김에 매개 변수를 추가 할 때 현재 컨텍스트에 매개 변수가 존재하지 않는다고 알려줍니다.
텍스트 상자 중 하나를 완전히 변경하지 않고 formview 외부로 복사하면 마술처럼 현재 컨텍스트에 존재합니다. 나의 무지를 용서하십시오. 그러나 삽입 될 정보를 실제로 전달할 수 없다면 삽입 템플릿의 요점은 무엇입니까?
(간결 함) 코드 :
<asp:FormView ID="PatientFormView"
DataSourceID="Sqldatasource1"
Gridlines="Both"
runat="server" DefaultMode="Insert"
HorizontalAlign="Left" Width="800">
...
Provider Name: <asp:TextBox ID="NPI" runat="server" Width="257px" Text='<%#Bind("npi")%>' Font-Bold="True"></asp:TextBox>
Patient MRN: <asp:TextBox ID="acctno" runat="server" ReadOnly="True" Width="257px" Text='<%#Bind("acctno")%>'></asp:TextBox>
</InsertItemTemplate>
그리고 코드 숨김 :
protected void Sqldatasource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@NPI"].Value = NPI.Text.ToString();
e.Command.Parameters["@acctno"].Value = acctno.Text.ToString();
}
내가 NPI를 얻을 acctno이 현재 컨텍스트에 존재하지 않는 곳입니다.
그러나 양식보기에서 해당 ASP TXOXbox 중 하나를 복사해도 존재합니다. 나는 전체 템플릿을 제거 할 수 있다고 생각하지만이 컨텍스트 문제를 이해하고 싶습니다. 사전에
감사합니다. 나는 이것에 대한 설명을 찾으려고 노력했고, 내가 찾은 대부분은 적용되지 않거나이 프로젝트의 페이지에는없는 .design 파일을 사용하는 것을 가리킨다.
의견을 보내 주셔서 감사합니다. 나는 아직 완전히 이해하지 못했지만 이것이 도움이된다. 내가 힘들게 시간을 보내고 왜, 심지어 중복 컨트롤이 없다는 것을 확인한 후에, 'Label1.Text = acctno.text.tostring();'과 같은 것을 할 수없는 이유가 있습니다. 코드 숨김에? 나는 그들이 텍스트 상자 중 하나에서 뭔가를 가져올 필요가있을 때 자바 스크립트를 사용하여 레이블을 채 웁니다. 그러나 그렇게해야한다는 것은 어리석은 것처럼 보입니다. 다시 한번, 나는 나의 무지에 대해 사과한다, 나는 ASP.NET에 비교적 익숙하다. 그리고 나는 관리하고있다. 그러나 나는 천천히 내가 좋아할 것보다 천천히있다. 시간 내 줘서 고마워. –
@R_Scott : 중복 컨트롤이 없어도 나중에 복제본을 추가 할 경우를 대비하여 컴파일러는 템플릿의 컨트롤 필드를 생성하지 않습니다. 'InsertItemTemplate'을'EditItemTemplate'에 복사하자마자 코드 숨김이 작동을 멈춘다면 꽤 짜증납니다! –
좋은 지적. 분명히 나는 아직도 많은 것을 배우고있다. 감사합니다. –