여기에 다른 답변이 UpdateCommand
으로 문제를 지적에 아주 정확보십시오.
이전에 언급 한 바와 같이, 나는 이것이 당신이 가지고있는 것보다 약간 쉽다는 것을 지적 할 것입니다. SQLDataSource
과 함께 GridView
을 사용할 때 제대로 설정하면 많은 작업이 완료됩니다.
우선,이처럼 SQLDataSource
의 마크 업에 UpdateCommand
을 정의
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Your Connection String Here"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT ColPK, ColA, ColB, ColC FROM Table_Name"
UpdateCommand="UPDATE Table_Name
SET [email protected], [email protected], [email protected],
WHERE [email protected]">
</asp:SqlDataSource>
(ColPK
테이블이 업데이트하고의 주요 열쇠가 될 것이다)
그렇다면, 당신은 할 수 있습니다 귀하의 GridView 마크 업에서 "AutoGenerateEditButton"을 true로 설정하십시오! 코드 뒤에 아무 것도하지 않고도 GridView
을 업데이트 할 수 있습니다. 이제
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AutoGenerateEditButton="True" DataKeyNames="ColPK"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ColPK" HeaderText="Column PK"
SortExpression="ColA" ReadOnly="True" />
<asp:BoundField DataField="ColA" HeaderText="Column A"
SortExpression="ColA" />
<asp:BoundField DataField="ColB" HeaderText="Column B"
SortExpression="ColB" />
<asp:BoundField DataField="ColC" HeaderText="Column C"
SortExpression="ColC" />
</Columns>
</asp:GridView>
, 당신은 아직도 당신이 추가 처리를해야 할 경우 코드에서 OnRowUpdating
이벤트를 처리하거나 등 일부 로직, 그러나 기본적인 업데이트 기능을 기반으로 Update
을 취소 할 수 있습니다하면 무료로 꽤 많이 있습니다!
'GridView'에 대해'DataKeyNames'가 설정되어 있고'SQLDataSource1' 마크 업에 정의 된'UpdateCommand'를 가지고 있다면'RowUpdating' 이벤트에서 아무 것도 할 필요가 없습니다. 여기서 Update() 메소드를 호출하면 UPDATE가 두 번 발생하게된다. – jadarnel27
@ jadarnel27이 맞습니다. 'DataKeyNames'가 설정되어 있다면'RowUpdating' 핸들러에서'Update()'를 호출하면 StackOverflowExeption이 발생합니다! –