2011-06-28 8 views
0

私のサイトのモデレータにデータベースのテーブルの編集やレコードの追加を許可するために作成したページがあります。 ASP.NET GridviewはINSERTを許可していないので(選択、編集、削除のみ可能)、VBファイルでINSERT INTO文を追加するためにビットを追加しました。(それは、asp:Button、これは__doPostBackとは対照的に<input>としてhtmlに変換されます)。__doPostBack次のコードがVBファイルにある場合、JS関数が機能しません

問題は、コードを追加したときに、loginStatusが完全に独立していても、loginStatus(ログアウトリンク)を使用できないことに加えて、gridviewでページングやソートを使用できなかったことです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"> 
      &nbsp;</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- ./?%&amp;=]*)?"></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 

すべてのヘルプはなり

[編集] VBファイルをクリアして同じ問題を起こしました。同じ問題、ソートやページング(またはloginStatusでのログアウト)がありません。私はこの時点で真剣に混乱しています。

[編集]ページの下部にある[更新]ボタンの問題点をすべて突き止めることができました。しかし、理由を理解することはできません。

+2

にあなたのコードにpage.isPostBackない場合は?私たちはあなたのデータベースを持っておらず、コードをそのまま実行することはできません。 – sisve

答えて

1

追加: あなたはまだ問題を呈する最小限のコードにコードを減らすことができ、Page_Loadイベント

+0

まだ動作しませんが、 'asp:Button'を 'asp:LinkBut​​ton'に切り替えると、gridviewとloginStatusのソートとページングがうまく動作します。私はLinkBut​​tonで作業することができますが、通常のボタンを好む。さらに私は、2人の間に何の関係も見られないときになぜそれがうまくいかないのかということに困惑しています。 – Pinkesz

関連する問題