У меня есть страница, которую я создал, чтобы позволить модераторам моего сайта редактировать и добавлять записи таблицы в базу данных.Поскольку ASP.NET gridview не допускает INSERT (он позволяет только выбирать, редактировать и удалять), я добавил немного в VB-файл, чтобы разрешить INSERT INTO оператор (и это работает, потому что он передается с использованием и asp:Button
, который переводится в html как <input>
, а не __doPostBack
).
Проблема заключается в том, что при добавлении кода я не смог использовать подкачку или сортировку в виде сетки вдополнение к невозможности использовать loginStatus (ссылку выхода из системы) вообще (даже если loginStatus полностью независим от accessDataSource или gridview.
Фактический файл:
<asp:LoginStatus ID="LoginStatus1" runat="server"
LogoutAction="RedirectToLoginPage" />
<asp:GridView ID="GridView1" runat="server"
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="ID" DataSourceID="ADS" ForeColor="#333333"
GridLines="Horizontal" Width="100%" AutoGenerateDeleteButton="True"
AutoGenerateEditButton="True" AutoGenerateSelectButton="True">
...(irrelevant code omitted)
<table>
<tr><td class="style4"><asp:Label ID="lblID" runat="server" Text="ID"></asp:Label></td>
<td class="style5"><asp:TextBox ID="tbID" runat="server" Width="127px"></asp:TextBox></td>
<td class="style5">
</td></tr>
<tr><td class="style2"><asp:Label ID="lblHead" runat="server" Text="Head"></asp:Label></td>
<td><asp:TextBox ID="tbHead" runat="server"></asp:TextBox></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ErrorMessage="Please enter a header" ControlToValidate="tbHead"></asp:RequiredFieldValidator>
</td></tr>
<tr><td class="style3"><asp:Label ID="lblBody" runat="server" Text="Body"></asp:Label></td>
<td class="style1"><asp:TextBox ID="tbBody" runat="server"></asp:TextBox></td>
<td class="style1"></td></tr>
<tr><td class="style2"><asp:Label ID="lblBy" runat="server" Text="by"></asp:Label></td>
<td><asp:TextBox ID="tbBy" runat="server"></asp:TextBox></td>
<td></td></tr>
<tr><td class="style2"><asp:Label ID="lblURL" runat="server" Text="URL"></asp:Label></td>
<td><asp:TextBox ID="tbURL" runat="server"></asp:TextBox></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ErrorMessage="Please enter a valid url" ControlToValidate="tbURL"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"
ErrorMessage="Please enter a valid url" ControlToValidate="tbURL"
Display="Dynamic"
ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"></asp:RegularExpressionValidator>
</td></tr>
<tr><td class="style2"><asp:Label ID="lblDateposted" runat="server" Text="dateposted"></asp:Label></td>
<td><asp:TextBox ID="tbDateposted" runat="server"></asp:TextBox></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ErrorMessage="Please enter a valid date following the current format (mm/dd/yyyy) ignore the time."
ControlToValidate="tbDateposted"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="Please enter a valid date following the current format (mm/dd/yyyy) ignore the time."
ControlToValidate="tbDateposted" Display="Dynamic"
ValidationExpression="^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$"></asp:RegularExpressionValidator>
</td></tr>
<tr><td class="style2">
<asp:Button ID="submit" runat="server" Text="Update" /></td>
</tr></table>
И здесьэто файл VB:
Imports System.Data.OleDb
Partial Class staffcp_Default
Inherits System.Web.UI.Page
Protected Sub submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles submit.Click
Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../App_Data/Signees.mdb")
Dim dbConnection As OleDbConnection = New OleDbConnection(connStr)
Dim SQL As New OleDbCommand
dbConnection.Open()
SQL.Connection = dbConnection
SQL.CommandText = "INSERT INTO aae VALUES (" + tbID.Text + ", '" + tbHead.Text + "', '" + tbBody.Text + "', '" + tbBy.Text + "', '" + tbURL.Text + "', '" + tbDateposted.Text + "')"
SQL.ExecuteNonQuery()
dbConnection.Close()
SQL.Connection.Close()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim SQLResult As Object
Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../App_Data/Signees.mdb")
Dim dbConnection As OleDbConnection = New OleDbConnection(connStr)
Dim SQL As New OleDbCommand
dbConnection.Open()
SQL.Connection = dbConnection
SQL.CommandText = "SELECT COUNT (*) FROM aae"
SQLResult = SQL.ExecuteScalar
Dim count As Object = SQLResult
dbConnection.Close()
SQL.Connection.Close()
tbID.Text = count.ToString + 1
tbID.ReadOnly = True
End Sub
End Class
Любая помощь будет принята с благодарностью
[EDIT]: я только что попробовал то же самое с очищенным файлом VB: та же проблема, без сортировки или подкачки (или выйдя из системы loginStatus). Я серьезно запутался в этом моменте.
[РЕДАКТИРОВАТЬ]: мне удалось точно указать на кнопку «Обновить» внизу страницы.выяснить, почему, хотя.