DetailsView类的DateKey是只读的,所以不能通过他指定DetailsView的显示项。而通过SqlDataSource的FilterExpression,即可实现。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SqlServerConnectionString %>"
DeleteCommand="DELETE FROM [Article] WHERE [ArticleID] = @ArticleID"
InsertCommand="INSERT INTO [Article] ([Subject], [Tag], [Channel], [Type], [Text], [IsTopic]) VALUES (@Subject, @Tag, @Channel, @Type, @Text, @IsTopic)"
SelectCommand="SELECT [ArticleID], [Subject], [Tag], [Channel], [Type], [Text], [IsTopic] FROM [Article] ORDER BY [ArticleID] DESC"
UpdateCommand="UPDATE [Article] SET [Subject] = @Subject, [Tag] = @Tag, [Channel] = @Channel, [Type] = @Type, [Text] = @Text, [IsTopic] = @IsTopic WHERE [ArticleID] = @ArticleID"
FilterExpression="ArticleID={0}" >
<FilterParameters>
<asp:QueryStringParameter ConvertEmptyStringToNull="true" QueryStringField="ArticleID" Type="Int32" Name="ArticleID" />
</FilterParameters>
<DeleteParameters>
<asp:Parameter Name="ArticleID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Subject" Type="String" />
<asp:Parameter Name="Tag" Type="String" />
<asp:Parameter Name="Channel" Type="String" />
<asp:Parameter Name="Type" Type="String" />
<asp:Parameter Name="Text" Type="String" />
<asp:Parameter Name="IsTopic" Type="Boolean" />
<asp:Parameter Name="ArticleID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Subject" Type="String" />
<asp:Parameter Name="Tag" Type="String" />
<asp:Parameter Name="Channel" Type="String" />
<asp:Parameter Name="Type" Type="String" />
<asp:Parameter Name="Text" Type="String" />
<asp:Parameter Name="IsTopic" Type="Boolean" />
</InsertParameters>
</asp:SqlDataSource>