2011-07-06 16 views
3

私は人々が報告した他の問題を見てきましたが、これらのどれも私が抱えている問題を解決するものはありません。私はこのwalkthroughをMSから入手して、ASP.netアプリケーションを使用してAccess DBを操作してきました。残念ながら、行を追加するボタンは一度は機能しており、ローカルのWebサーバーまたは組み込みの.NETサーバーでは何もしません。私は問題が何であるかを解明することができず、私は昨日から机に向かって頭を叩いていました。なぜこのボタンのOnClickイベントは1回だけ動作しますか?

ここに私のコードです。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="editTest._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:DataGrid ID="datagrid" runat="server" AutoGenerateColumns="False" 
     oncancelcommand="datagrid_CancelCommand" oneditcommand="datagrid_EditCommand" 
     onupdatecommand="datagrid_UpdateCommand"> 
     <Columns> 
      <asp:EditCommandColumn CancelText="Cancel" EditText="Edit" UpdateText="Update"> 
      </asp:EditCommandColumn> 
      <asp:BoundColumn DataField="firstName" HeaderText="First Name"> 
      </asp:BoundColumn> 
      <asp:BoundColumn DataField="lastName" HeaderText="Surname"></asp:BoundColumn> 
      <asp:BoundColumn DataField="sex" HeaderText="Gender"></asp:BoundColumn> 
      <asp:BoundColumn DataField="phoneNo" HeaderText="Telephone"></asp:BoundColumn> 
     </Columns> 
    </asp:DataGrid> 
    <div> 

     <asp:Button ID="Button1" runat="server" Text="Button" /> 

    </div> 
    </form> 
</body> 
</html> 

とC#end;

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.OleDb; 

namespace editTest 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) ReadRecords(); 
     } 

     private void ReadRecords() 
     { 
      OleDbConnection cnt = null; 
      OleDbDataReader rdr = null; 

      try 
      { 
       cnt = new OleDbConnection(
        "Provider=Microsoft.Jet.OLEDB.4.0; " + 
        "Data Source=" + Server.MapPath("test/accessTest.mdb")); 
       cnt.Open(); 

       OleDbCommand cmd = new OleDbCommand("Select * FROM editTest", cnt); 
       rdr = cmd.ExecuteReader(); 

       datagrid.DataSource = rdr; 
       datagrid.DataBind(); 
      } 

      catch (Exception e) 
      { 
       Response.Write(e.Message); 
       Response.End(); 
      } 

      finally 
      { 
       if (rdr != null) rdr.Close(); 
       if (cnt != null) cnt.Close(); 
      } 
     } 

     private void ExecuteNonQuery(string sql) 
     { 
      OleDbConnection cnt = null; 
      try 
      { 
       cnt = new OleDbConnection(
        "Provider=Microsoft.Jet.OLEDB.4.0; " + 
        "Data Source=" + Server.MapPath("test/accessTest.mdb")); 
       cnt.Open(); 

       OleDbCommand cmd = 
        new OleDbCommand(sql, cnt); 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception e) 
      { 
       Response.Write(e.Message); 
       Response.End(); 
      } 
      finally 
      { 
       if (cnt != null) cnt.Close(); 
      } 
     } 

     protected void datagrid_CancelCommand(object source, DataGridCommandEventArgs e) 
     { 
      datagrid.EditItemIndex = -1; 
      ReadRecords(); 
     } 

     protected void datagrid_EditCommand(object source, DataGridCommandEventArgs e) 
     { 
      datagrid.EditItemIndex = e.Item.ItemIndex; 
      ReadRecords(); 
     } 

     protected void datagrid_UpdateCommand(object source, DataGridCommandEventArgs e) 
     { 
      int ID = (int)datagrid.DataKeys[(int)e.Item.ItemIndex]; 

      string firstName = ((TextBox)e.Item.Cells[1].Controls[0]).Text; 
      string lastName = ((TextBox)e.Item.Cells[2].Controls[0]).Text; 
      string sex = ((TextBox)e.Item.Cells[3].Controls[0]).Text; 
      string phoneNo = ((TextBox)e.Item.Cells[4].Controls[0]).Text; 

      string sql = 
       "UPDATE editTest SET firstName=\"" + firstName + 
       "\", lastName=\"" + lastName + "\", sex=\"" + sex + 
       "\", phoneNo=\"" + phoneNo + "\"" + 
       " WHERE ID=" + ID; 
      ExecuteNonQuery(sql); 

      datagrid.EditItemIndex = -1; 
      ReadRecords(); 
     } 

     private void Button1_Click(object sender, EventArgs e) 
     { 
      string sql = "INSERT INTO editTest (firstName, lastName, sex, phoneNo)" 
         + " VALUES (\"new\", \"new\", \"new\", \"new\")"; 
      ExecuteNonQuery(sql); 
      ReadRecords(); 
     } 
    } 
} 

あなたは、ASPXのイベント逃した任意のヘルプ

答えて

1

してくれてありがとう:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick='Button1_Click' /> 

をとのButton1 Clickパブリックまたは保護します。

または、コードビハインドでそれを設定することができます。

+0

おかげで、私は、クリック時は、ボタンで設定されていなかったが、コードビハインドの方法は、私は必要なものだけであるので、それは奇妙なエラーの原因となりました:) – RyanMacG

関連する問題