初学ASP.NET

  新工作,新环境,开始学习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的例子


posted @ 2007-10-12 10:30  一瞬间  阅读(434)  评论(0编辑  收藏  举报