0

나는 다음과 같은 격자를 가지고 :UpdateCommand 문제

<asp:GridView DataSourceID="accountsDataSource" DataKeyNames="Id" ShowEditButton="true" ...> 

    <asp:TemplateField HeaderText="Name"> 
    <ItemTemplate> 
     <asp:Hyperlink ID="lnkGridEditEntry" runat="server" Text='<%# Bind("Name")%>' NavigateUrl="..." /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtGridAccountName" runat="server" Text='<%# Bind("Name") %>' /> 
    </EditItemTemplate> 
    </asp:TemplateField> 

</asp:GridView> 

<asp:SqlDataSource ID="accountsDataSource" SelectCommand= "..." DeleteCommand= "..." UpdateCommand="update Account set [Name][email protected] where [Id][email protected]"> 
    <UpdateParameters> 
    <asp:Parameter Name="Name" /> 
    <asp:Parameter Name="Id" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

나는 "편집"버튼을 클릭하고 이름을 업데이트하지 코드 위에 이름을 업데이트하려고하면

나는 "ControlParameter 이름의 제어 txtGridAccountName을 찾을 수 없습니다"로

<asp:ControlParameter ControlID="txtGridAccountName" Name="Name" PropertyName="Text" Type="String" /> 

페이지 충돌로 이름 업데이트 매개 변수를 변경합니다. 템플릿 필드의 텍스트 상자에 다른 ID (ct100 $ txtGridAccountName $ .. 같은 것) 가져옵니다 때문에 그리드 렌더링되고 분명히 찾을 수 없기 때문에이 믿습니다.

accout 이름은 세부 정보/거래 페이지에 대한 링크로 표시하고 있기 때문에 처음에는 템플릿 필드로 렌더링됩니다.

템플릿 필드를 제거하고이 이름을 표시하면 작동합니다.

이 문제를 해결하는 데 도움이됩니다.

+0

죄송합니다. 코드가 사라졌습니다. 나는 코드를 다시 편집 할 것이다. – Shankar

+0

이 문제는 그 자체로 사라졌습니다. 나는 아무 것도하지 않았습니다. 나는 거기 VS 또는 뭔가 이상한 문제가 있다고 생각합니다. 지금 ItemTemplates를 사용할 수 있습니다. – Shankar

답변

0

직접 디버깅하려면 SQL 데이터 원본 업데이트 이벤트와 gridview 행 업데이트 이벤트에 연결하여 문제를 확인해야합니다.

어쨌든 데이터베이스 설계에 대해 알지 못하면 업데이트 매개 변수에 유형이 누락되었다고 생각됩니다. 다음과 같이 시도하십시오.

<UpdateParameters> 
    <asp:Parameter Name="Name" Type="String" /> 
    <asp:Parameter Name="Id" Type="Int64" /> 
</UpdateParameters>