0

我在我拥有的页面上遇到了更新命令的问题。我有 4 个网格视图和 4 个详细信息视图,它们都不会使用更新命令进行更新。我可以插入和删除,但更新不起作用。更新按钮不会导致回帖,它只是坐在那里。

我创建了一个新页面并添加了一个详细信息视图并将其连接到同一个数据库和同一个表,并且在该页面中,更新命令运行良好。我什至将命令查询复制并粘贴到另一页上的详细信息视图中,但没有成功。

我在想是按钮的问题,但为什么默认的更新链接按钮不起作用?

我正在使用 ASP.NET、C# 和 SQL Server 2008。

我确实注意到工作的详细信息视图上的更新按钮显示:javascript:__doPostBack('DetailsView1$ctl02','')在状态栏上。

但是不起作用的更新按钮显示了这一点:WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$DetailsView2$ctl02", "", true, "", "", false, true))

这是有效的详细信息视图的代码

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
DataKeyNames="WorkshopName,WorkshopBeginingDate,WorkshopLocation" 
DataSourceID="SqlDataSource1" Height="50px" Width="125px">
<Fields>
<asp:BoundField DataField="WorkshopName" HeaderText="WorkshopName" 
ReadOnly="True" SortExpression="WorkshopName" />
<asp:BoundField DataField="WorkshopBeginingDate" 
HeaderText="WorkshopBeginingDate" ReadOnly="True" 
SortExpression="WorkshopBeginingDate" />
<asp:BoundField DataField="WorkshopEndingDate" HeaderText="WorkshopEndingDate" 
SortExpression="WorkshopEndingDate" />
<asp:BoundField DataField="WorkshopLocation" HeaderText="WorkshopLocation" 
ReadOnly="True" SortExpression="WorkshopLocation" />
    <asp:CommandField ShowEditButton="True" />
    </Fields>
</asp:DetailsView>

这是一个不起作用的代码

   <asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" 
                                    DataKeyNames="WorkshopName,WorkshopBeginingDate,WorkshopLocation" 
    DataSourceID="SqlDataSource20" Height="50px" Width="125px">
    <Fields>
    <asp:BoundField DataField="WorkshopName" HeaderText="WorkshopName" 
    ReadOnly="True" SortExpression="WorkshopName" />
    <asp:BoundField DataField="WorkshopBeginingDate" 
    HeaderText="WorkshopBeginingDate" ReadOnly="True" 
    SortExpression="WorkshopBeginingDate" />
    <asp:BoundField DataField="WorkshopEndingDate" HeaderText="WorkshopEndingDate" 
    SortExpression="WorkshopEndingDate" />
    <asp:BoundField DataField="WorkshopLocation" HeaderText="WorkshopLocation" 
    ReadOnly="True" SortExpression="WorkshopLocation" />
    <asp:CommandField ShowEditButton="True" />
    </Fields>
    </asp:DetailsView>

**This is the SQL Data source code for the one that doesn't work, it is also the same on the one that works, except for the Datasource ID.**

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConflictDetection="CompareAllValues" 
        ConnectionString="<%$ ConnectionStrings:WildLife_EducationConnectionString %>" 
        DeleteCommand="DELETE FROM [tblWorkshop] WHERE [WorkshopName] = @original_WorkshopName AND [WorkshopBeginingDate] = @original_WorkshopBeginingDate AND [WorkshopLocation] = @original_WorkshopLocation AND (([WorkshopEndingDate] = @original_WorkshopEndingDate) OR ([WorkshopEndingDate] IS NULL AND @original_WorkshopEndingDate IS NULL))" 
        InsertCommand="INSERT INTO [tblWorkshop] ([WorkshopName], [WorkshopBeginingDate], [WorkshopEndingDate], [WorkshopLocation]) VALUES (@WorkshopName, @WorkshopBeginingDate, @WorkshopEndingDate, @WorkshopLocation)" 
        OldValuesParameterFormatString="original_{0}" 
        SelectCommand="SELECT [WorkshopName], [WorkshopBeginingDate], [WorkshopEndingDate], [WorkshopLocation] FROM [tblWorkshop]" 
        UpdateCommand="UPDATE [tblWorkshop] SET [WorkshopEndingDate] = @WorkshopEndingDate WHERE [WorkshopName] = @original_WorkshopName AND [WorkshopBeginingDate] = @original_WorkshopBeginingDate AND [WorkshopLocation] = @original_WorkshopLocation AND (([WorkshopEndingDate] = @original_WorkshopEndingDate) OR ([WorkshopEndingDate] IS NULL AND @original_WorkshopEndingDate IS NULL))">
        <DeleteParameters>
            <asp:Parameter Name="original_WorkshopName" Type="String" />
            <asp:Parameter DbType="Date" Name="original_WorkshopBeginingDate" />
            <asp:Parameter Name="original_WorkshopLocation" Type="String" />
            <asp:Parameter DbType="Date" Name="original_WorkshopEndingDate" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="WorkshopName" Type="String" />
            <asp:Parameter DbType="Date" Name="WorkshopBeginingDate" />
            <asp:Parameter DbType="Date" Name="WorkshopEndingDate" />
            <asp:Parameter Name="WorkshopLocation" Type="String" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter DbType="Date" Name="WorkshopEndingDate" />
            <asp:Parameter Name="original_WorkshopName" Type="String" />
            <asp:Parameter DbType="Date" Name="original_WorkshopBeginingDate" />
            <asp:Parameter Name="original_WorkshopLocation" Type="String" />
            <asp:Parameter DbType="Date" Name="original_WorkshopEndingDate" />
        </UpdateParameters>
    </asp:SqlDataSource>
4

1 回答 1

0

After weeks of researching I decided to remove all the ajax from my page, and update started working beautifully. Apparently the some code was conflicting with the update command on the page.

I had researched the issue for weeks, readded the datasource many times but no success. My last resource was to remove all of the ajax from the page and magically everything worked.

于 2013-04-15T10:00:53.940 回答