ASP.NET Удалить / Вставить / Обновить проблему, но дисплей работает?Используемый мастер - PullRequest
0 голосов
/ 24 декабря 2011

Я использовал мастер для создания операторов вставки, изменения, обновления и удаления. Проблема в том, что они не работают в моем виде сетки. Когда я использую их, я получаю сообщение об ошибке:

Не указано значение для одного или нескольких обязательных параметров.

Мне было интересно, в чем может быть проблема? Он запрашивает и отображает данные в порядке.

<LoggedInTemplate>
    <asp:LoginStatus ID="LoginStatus1" runat="server" />
<div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #FFFFFF">
<p style="font-size: 20px">Welcome Back!<br />
Begin Sharing and Reading Space Tips Below!
</p>



<p>&nbsp;Current Posts:
    <asp:GridView ID="GridView1" runat="server" DataSourceID="AccessDataSource1" 
        AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
        BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" CellSpacing="2" DataKeyNames="Title">
        <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
        <Columns>
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" 
                ReadOnly="True" />
            <asp:BoundField DataField="User" HeaderText="User" SortExpression="User" />
            <asp:BoundField DataField="Timeof" HeaderText="Date" 
                SortExpression="Timeof" />
            <asp:BoundField DataField="Post" HeaderText="Post" SortExpression="Post" />
            <asp:CommandField ButtonType="Button" ShowEditButton="True" />
            <asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
        </Columns>
        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
        <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
    </asp:GridView>

    <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
        DataFile="~/App_Data/Posts.mdb" 
        SelectCommand="SELECT * FROM [UserPost] ORDER BY [Timeof]" 
        DeleteCommand="DELETE FROM [UserPost] WHERE (([Title] = ?) OR ([Title] IS NULL AND ? IS NULL))" 
        InsertCommand="INSERT INTO [UserPost] ([Title], [User], [Timeof], [Post]) VALUES (?, ?, ?, ?)" 
        UpdateCommand="UPDATE [UserPost] SET [User] = ?, [Timeof] = ?, [Post] = ? WHERE (([Title] = ?) OR ([Title] IS NULL AND ? IS NULL))">
        <DeleteParameters>
            <asp:Parameter Name="Title" Type="String" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="User" Type="String" />
            <asp:Parameter Name="Timeof" Type="DateTime" />
            <asp:Parameter Name="Post" Type="String" />
            <asp:Parameter Name="Title" Type="String" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="User" Type="String" />
            <asp:Parameter Name="Timeof" Type="DateTime" />
            <asp:Parameter Name="Post" Type="String" />
        </InsertParameters>
    </asp:AccessDataSource>

</p>

    <table>
    <tr><td> <asp:Label ID="Label1" runat="server" Text="User: "></asp:Label></td><td> 
        <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="createpost"></asp:TextBox></td></tr>
    <tr><td><asp:Label ID="Label2" runat="server" Text="Title: "></asp:Label></td><td><asp:TextBox ID="TextBox2"
            runat="server" ValidationGroup="createpost"></asp:TextBox></td></tr>
    <tr><td><asp:Label ID="Label3" runat="server" Text="Date: "></asp:Label></td><td> <asp:TextBox ID="TextBox3"
            runat="server"></asp:TextBox></td></tr>
    <tr><td valign="top"><asp:Label ID="Label4" runat="server" Text="Story: "></asp:Label></td><td valign="top">
        <asp:TextBox ID="TextBox4" runat="server" Height="129px" Width="474px" 
            TextMode="MultiLine"></asp:TextBox></td></tr>
    </table>
        <asp:Button ID="makepost" runat="server" Text="Post My Tip/Story" 
            ValidationGroup="createpost" onclick="makepost_Click" /><br />

</div>

</LoggedInTemplate><AnonymousTemplate>

    <asp:Login ID="Login1" runat="server" ForeColor="White">
    </asp:Login><br /><div style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color:#FFFFFF">Please Register to be begin viewing and sharing your 
    <br />Star Wars Old Republic Tips and Stories!</div>
</AnonymousTemplate>
</asp:LoginView>

1 Ответ

1 голос
/ 24 декабря 2011

У меня сейчас не очень хорошо с доступом, но, как я вижу (и проверял) в DeleteCommand, вы указываете 2 параметра, но просто объявляете 1, это не похоже на SQL Server, где вы называете параметры и можете использовать один параметр много времени в запросе, то же самое происходит в UpdateCommand, но с большим количеством параметров ... см. в операторе Where.

Попробуйте сделать что-то вроде этого:

DeleteCommand="DELETE FROM UserPost WHERE (Title = ?)" 
UpdateCommand="UPDATE UserPost SET [User] = ?, Timeof = ?, Post = ? WHERE (Title = ?)"

Я проверил, и это сработало.

Редактировать: у вас больше всего есть идентификатор (уникальный первичный ключ) в вашей таблице для работы с ним, а не с полем Заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...