初学ASP.NET
入门,找了quickstart,结果发现是1.0的,写了个datagrid的CRUD+分页的例子.感觉控件功能确实封装的比较好,不过要自定义就好象麻烦起来了.= = ,初学就是这样,什么都不是很懂.
default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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>Welcome to the testdata</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--DropDownList
<div>
<asp:DropDownList id="DropDown1" runat="server">
</asp:DropDownList>
<asp:button ID="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>
<p>You Selected <asp:label ID="Label1" text="<%# DropDown1.SelectedItem.Text %>" runat="server"/></p>
</div>--%>
<div>
<%--<p>地址模糊查询:<input type="text" id="MySelect" maxlength="20" runat="server" name="MySelect"/><input type="submit" value="查询" runat="server" id="Submit1" onserverclick="search_ServerClick" /></p>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="700px"
BackColor="#CCCCFF"
BorderColor="Black"
CellPadding="3"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
EnableViewState="False"
Font-Names="Verdana"
AutoGenerateColumns="False"
DataKeyField="ID">
<HeaderStyle BackColor="#AAAADD" />
<Columns>
<asp:BoundColumn DataField="project_number" HeaderText="编号"></asp:BoundColumn>
<asp:BoundColumn DataField="address" HeaderText="地址"></asp:BoundColumn>
<asp:BoundColumn DataField="create_time" HeaderText="录入时间"></asp:BoundColumn>
<asp:BoundColumn DataField="update_time" HeaderText="最近修改时间"></asp:BoundColumn>
</Columns>
</ASP:DataGrid>--%>
<asp:datagrid id="MyDataGrid" runat="server"
Width="700px"
BackColor="#CCCCFF"
BorderColor="Black"
CellPadding="3"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
Font-Names="Verdana"
AutoGenerateColumns="False"
DataKeyField="ID" AllowPaging="True"
PageSize="5" OnEditCommand="edit" OnCancelCommand="cancel" OnUpdateCommand="update">
<Columns>
<asp:TemplateColumn HeaderText="姓名">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"project_number") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="name" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"project_number") %>' Width="90px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="地址">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"address") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="age" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"address") %>' Width="200px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="create_time" HeaderText="录入时间"></asp:BoundColumn>
<asp:BoundColumn DataField="update_time" HeaderText="最近修改时间"></asp:BoundColumn>
<asp:EditCommandColumn UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="del"></asp:ButtonColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</div>
<hr />
<div>
<table>
<tr>
<td colspan="2" style="font:10pt verdana;background-color:#aaaadd;">Add a New Address:</td>
</tr>
<tr>
<td>Address ID: </td>
<td><input type="text" id="project_number" value="2007090463" runat="server" onclick="this.value=''"/></td>
</tr>
<tr>
<td>Address: </td>
<td><%--<input type="text" id="address" value="电子科技大学" runat="server" onclick="this.value=''"/>--%><textarea id="address" cols="20" rows="5" runat="server" onclick="this.value=''">电子科技大学</textarea></td>
</tr>
<tr>
<td></td>
<td style="padding-top:15">
<input id="Submit2" type="submit" onserverclick="AddAuthor_Click" value="Add Author" runat="server"/>
</td>
</tr>
</table>
<span id="Message" enableviewstate="false" style="font: arial 11pt;" runat="server"/>
</div>
<!--测试数据库连接
<div><asp:Label ID="labinfo" runat="server"></asp:Label></div>
-->
</div>
</form>
</body>
</html>
default.aspx.cs:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
//string connectionString = "server=10.4.4.251;database=testData;uid=sa;pwd=p@ssw0rd";
//SqlConnection mySqlConnection = new SqlConnection(connectionString);
//mySqlConnection.ConnectionString = connectionString;
/* DropDownList
if (!Page.IsPostBack)
{
ArrayList values = new ArrayList();
values.Add("龙台县卫生局5楼501会议室(龙台县正府路30号)");
values.Add("西华大学新校区建设指挥部会议室");
values.Add("电子科技大学");
DropDown1.DataSource = values;
DropDown1.DataBind();
}
*/
//data access
//SqlCommand myCommand = new SqlCommand("select * from address", mySqlConnection);
//mySqlConnection.Open();
//SqlDataReader dr = myCommand.ExecuteReader();
//MyDataGrid.DataSource = dr;
//MyDataGrid.DataBind();
//mySqlConnection.Close();
/*
SqlDataAdapter myCommand = new SqlDataAdapter("select * from address", mySqlConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "address");
MyDataGrid.DataSource = ds.Tables["address"].DefaultView;
MyDataGrid.DataBind();
*/
/*测试数据库连接
try
{
mySqlConnection.Open();
labinfo.Text = "<b>mySqlConnection对象的ConnectionString属性为:<b>" +
mySqlConnection.ConnectionString + "<br>";
labinfo.Text += "<b>mySqlConnection对象的ConnectionTimeout属性为<b>" +
mySqlConnection.ConnectionTimeout + "<br>";
labinfo.Text += "<b>mySqlConnection对象的Database属性为<b>" +
mySqlConnection.Database + "<br>";
labinfo.Text += "<b>mySqlConnection对象的DataSource属性为<b>" +
mySqlConnection.DataSource + "<br>";
labinfo.Text += "<b>mySqlConnection对象的PacketSize属性为<b>" +
mySqlConnection.PacketSize + "<br>";
labinfo.Text += "<b>mySqlConnection对象的ServerVersion属性为<b>" +
mySqlConnection.ServerVersion + "<br>";
labinfo.Text += "<b>mySqlConnection对象的当前状态为<b>" +
mySqlConnection.State + "<br>";
}
catch (Exception err)
{
labinfo.Text = "读取数据库出错";
labinfo.Text += err.Message;
}
finally
{
//关闭与数据库的连接
mySqlConnection.Close();
labinfo.Text += "<br><b>关闭连接后的mySqlConnection对象的状态为:</b>";
labinfo.Text += mySqlConnection.State.ToString();
}
* */
}
/**
*
protected void SubmitBtn_Click(object sender, EventArgs e)
{
Page.DataBind();
}
*/
/**
*
protected void search_ServerClick(object sender, EventArgs e)
{
string selectcmd = "select * from address where address like @address";
string connectionstring = "server=10.4.4.251;database=testdata;uid=sa;pwd=p@ssw0rd";
SqlConnection mysqlconnection = new SqlConnection(connectionstring);
SqlDataAdapter mycommand = new SqlDataAdapter(selectcmd, mysqlconnection);
mycommand.SelectCommand.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar, 200));
mycommand.SelectCommand.Parameters["@address"].Value = "%" + MySelect.Value + "%";
DataSet ds = new DataSet();
mycommand.Fill(ds, "address");
MyDataGrid.DataSource = ds.Tables["address"].DefaultView;
MyDataGrid.DataBind();
Response.Redirect(this.AppRelativeVirtualPath);
}
*/
protected void AddAuthor_Click(object sender, EventArgs e)
{
string connectionString = "server=10.4.4.251;database=testData;uid=sa;pwd=p@ssw0rd";
SqlConnection mySqlConnection = new SqlConnection(connectionString);
if (address.Value == "" || project_number.Value == "")
{
Message.InnerHtml = "ERROR: Null values not allowed for Author ID, Name or Phone";
Message.Style["color"] = "red";
return;
}
String insertcmd = "insert into address (project_number,address,create_time,update_time) values (@project_number,@address,GETDATE(),GETDATE())";
SqlCommand mycommand = new SqlCommand(insertcmd, mySqlConnection);
mycommand.Parameters.Add(new SqlParameter("@project_number", SqlDbType.VarChar, 10));
mycommand.Parameters["@project_number"].Value = Server.HtmlEncode(project_number.Value);
mycommand.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar, 200));
mycommand.Parameters["@address"].Value = Server.HtmlEncode(address.Value);
mycommand.Connection.Open();
try
{
mycommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Added</b><br>" + insertcmd.ToString();
}
catch (SqlException error)
{
if (error.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not add record, please ensure the fields are correctly filled out";
Message.Style["color"] = "red";
}
mycommand.Connection.Close();
Response.Redirect(this.AppRelativeVirtualPath);
}
private void BindGrid()
{
String connectionString = "server=10.4.4.251;database=testData;uid=sa;pwd=p@ssw0rd";
SqlConnection mySqlConnection = new SqlConnection(connectionString);
SqlDataAdapter myCommand = new SqlDataAdapter("select * from address ORDER BY create_time DESC", mySqlConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "address");
MyDataGrid.DataSource = ds.Tables["address"].DefaultView;
MyDataGrid.DataBind();
}
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**/
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.MyDataGrid.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.MyDataGrid_ItemCreated);
this.MyDataGrid.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.MyDataGrid_ItemCommand);
this.MyDataGrid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.MyDataGrid_PageIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
private void MyDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName == "del")
{
//SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
String connectionString = "server=10.4.4.251;database=testData;uid=sa;pwd=p@ssw0rd";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand comm = new SqlCommand("delete from address where ID=@id", conn);
SqlParameter parm1 = new SqlParameter("@id", SqlDbType.Int);
parm1.Value = this.MyDataGrid.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
BindGrid();
}
}
private void MyDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
protected void edit(object sender, DataGridCommandEventArgs e)
{
this.MyDataGrid.EditItemIndex = e.Item.ItemIndex;
BindGrid();
}
protected void cancel(object sender, DataGridCommandEventArgs e)
{
this.MyDataGrid.EditItemIndex = -1;
BindGrid();
}
protected void update(object sender, DataGridCommandEventArgs e)
{
//SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
String connectionString = "server=10.4.4.251;database=testData;uid=sa;pwd=p@ssw0rd";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand comm = new SqlCommand("update address set project_number=@vName,address=@iAge,update_time=GETDATE() where ID=@id", conn);
SqlParameter parm1 = new SqlParameter("@vName", SqlDbType.VarChar,10);
parm1.Value = ((TextBox)e.Item.FindControl("name")).Text;
SqlParameter parm2 = new SqlParameter("@iAge", SqlDbType.VarChar,200);
parm2.Value = ((TextBox)e.Item.FindControl("age")).Text;
SqlParameter parm3 = new SqlParameter("@id", SqlDbType.Int);
parm3.Value = this.MyDataGrid.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
this.MyDataGrid.EditItemIndex = -1;
BindGrid();
}
private void MyDataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
foreach (DataGridItem di in this.MyDataGrid.Items)
{
if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem || di.ItemType == ListItemType.EditItem)
{
((LinkButton)di.Cells[5].Controls[0]).Attributes.Add("onclick", "return confirm('delete?');");
}
}
}
}
好象还有点小问题:)...再去做个gridview的例子