0

我已经为此工作了一段时间,并意识到我的 DetailsView 本身实际上可以正常工作(我在另一个页面上对其进行了测试)。

但是当我把它放在页面的选项卡布局中,然后单击编辑时,它会在更新时清除数据库中具有空值的所有值。

例如这里的页面:http ://pactlegacy.com/sentinel/employeeprofile.aspx?curEmp=3

这是详细信息视图:

<div id="tab-general" class="tabs-content">

                            <div class="avatar">
                                <h3>General Information</h3>
                            </div>

                            <fieldset class="grey-bg">
                                <legend>Required fields</legend>

                                <div class="colx3-left-double">

                                    <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
                                        AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
                                        <Fields>
                                            <asp:CommandField ShowEditButton="True" ButtonType="Button"/>

                                            <asp:BoundField DataField="FirstName" HeaderText="First Name"
                                                SortExpression="FirstName" />
                                            <asp:BoundField DataField="LastName" HeaderText="Last Name"
                                                SortExpression="LastName" />
                                            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
                                            <asp:BoundField DataField="JobID" HeaderText="JobID" SortExpression="JobID" />
                                            <asp:BoundField DataField="SupervisorID" HeaderText="SupervisorID"
                                                SortExpression="SupervisorID" />
                                            <asp:BoundField DataField="HireDate" HeaderText="Hire Date"
                                                SortExpression="HireDate" />
                                            <asp:BoundField DataField="Status" HeaderText="Status"
                                                SortExpression="Status" />
                                            <asp:CommandField ShowEditButton="True" />
                                        </Fields>
                                    </asp:DetailsView>
                                    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                                        ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
                                        DeleteCommand="DELETE FROM [Users] WHERE [ID] = @ID"
                                        InsertCommand="INSERT INTO [Users] ([ClientID], [UserName], [Password], [FirstName], [LastName], [Email], [JobID], [SupervisorID], [HireDate], [Status]) VALUES (@ClientID, @UserName, @Password, @FirstName, @LastName, @Email, @JobID, @SupervisorID, @HireDate, @Status)"
                                        ProviderName="<%$ ConnectionStrings:dbConnectionString.ProviderName %>"
                                        SelectCommand="SELECT [ID], [ClientID], [UserName], [Password], [FirstName], [LastName], [Email], [JobID], [SupervisorID], [HireDate], [Status] FROM [Users] WHERE [ID] = @ID"
                                        UpdateCommand="UPDATE [Users] SET [ClientID] = @ClientID, [UserName] = @UserName, [Password] = @Password, [FirstName] = @FirstName, [LastName] = @LastName, [Email] = @Email, [JobID] = @JobID, [SupervisorID] = @SupervisorID, [HireDate] = @HireDate, [Status] = @Status WHERE [ID] = @ID">
                                        <SelectParameters>
                                            <asp:QueryStringParameter Name="ID" QueryStringField="curEmp" Type="Int64" />
                                        </SelectParameters>

                                        <UpdateParameters>
                                            <asp:Parameter Name="ClientID" Type="Int64" />
                                            <asp:Parameter Name="UserName" Type="String" />
                                            <asp:Parameter Name="Password" Type="String" />
                                            <asp:Parameter Name="FirstName" Type="String" />
                                            <asp:Parameter Name="LastName" Type="String" />
                                            <asp:Parameter Name="Email" Type="String" />
                                            <asp:Parameter Name="JobID" Type="Double" />
                                            <asp:Parameter Name="SupervisorID" Type="Double" />
                                            <asp:Parameter Name="HireDate" Type="DateTime" />
                                            <asp:Parameter Name="Status" Type="String" />
                                            <asp:Parameter Name="ID" />
                                        </UpdateParameters>
                                    </asp:SqlDataSource> 

                                </div>







                            </fieldset>

                        </div>

有谁知道为什么会这样?为了让我的 DetailsView 在我的选项卡布局中正确更新,我需要更改什么?

4

1 回答 1

0

您需要在 DetailsView 中添加一个 ID 字段,如下所示:

 <asp:BoundField 
         DataField="ID" 
         HeaderText="ID" 
         InsertVisible="False" 
         ReadOnly="True" 
         SortExpression="ID" />

这是您在 DetailsView 中缺少的主键。

于 2013-08-31T00:42:36.260 回答