[英]Why is this button OnClick event only working once?
我查看了人們報告的其他問題,但這些問題都沒有解決我遇到的問題。 我一直在使用 MS 的這個演練來使用 ASP.net 應用程序來操作 Access DB。 不幸的是,添加一行的按鈕已經工作了一次,並且不再在我的本地網絡服務器或內置的 .NET 上執行任何操作。 我無法弄清楚問題是什么,從昨天開始我就一直用頭撞桌子。
這是我的代碼;
<%@ 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# 端;
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 上的事件:
<asp:Button ID="Button1" runat="server" Text="Button" OnClick='Button1_Click' />
並使 Button1_Click 公開或受保護。
或者,您可以在代碼隱藏中設置它:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) ReadRecords();
Button1.Click += Button1_Click;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.