从接触SqlDataSource开始,用得最多的也就这样的:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<asp:SqlDataSource ID="classType" runat="server" ConnectionString="<%$ ConnectionStrings:NewsSysConn %>"
DeleteCommand="DELETE FROM [ClassType_tb] WHERE [Id] = @Id" InsertCommand="INSERT INTO [ClassType_tb] ([TypeName], [Description]) VALUES (@TypeName, @Description)"
SelectCommand="SELECT * FROM [ClassType_tb]" UpdateCommand="UPDATE [ClassType_tb] SET [TypeName] = @TypeName, [Description] = @Description WHERE [Id] = @Id">
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="TypeName" Type="String" />
<asp:Parameter Name="Description" Type="String" />
<asp:Parameter Name="Id" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="TypeName" Type="String" />
<asp:Parameter Name="Description" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
今天在一个项目中发现了这样的写法:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<asp:SqlDataSource ID="sdsClassType" runat="server" ConnectionString="<%$ ConnectionStrings:NewsSysConn %>"
OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [ClassType_tb]"
ConflictDetection="CompareAllValues" DeleteCommand="DELETE FROM [ClassType_tb] WHERE [Id] = @original_Id"
InsertCommand="INSERT INTO [ClassType_tb] ([TypeName], [Description]) VALUES (@TypeName, @Description)"
UpdateCommand="UPDATE [ClassType_tb] SET [TypeName] = @TypeName, [Description] = @Description WHERE [Id] = @original_Id AND [TypeName] = @original_TypeName AND [Description] = @original_Description">
<DeleteParameters>
<asp:Parameter Name="original_Id" Type="Int32" />
<asp:Parameter Name="original_TypeName" Type="String" />
<asp:Parameter Name="original_Description" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="TypeName" Type="String" />
<asp:Parameter Name="Description" Type="String" />
<asp:Parameter Name="original_Id" Type="Int32" />
<asp:Parameter Name="original_TypeName" Type="String" />
<asp:Parameter Name="original_Description" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="TypeName" Type="String" />
<asp:Parameter Name="Description" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
上网查了下,关于ConflictDetection属性的介绍如下:
这里需要注意的是,如果ConflictDetection属性值为CompareAllValues,与之绑定的数据控件每列的值必须全部显示,否则无法删除并报错;倘若设置为OverwriteChanges值,出现的情况是无法更新。