1. 程式人生 > >使用DataList資料修改,儲存,取消

使用DataList資料修改,儲存,取消





<%@ Page language="c#" Codebehind="DataGridEdit.aspx.cs" AutoEventWireup="false" Inherits="News.DataGridEdit" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>DataGridEdit</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="DataGridEdit" method="post" runat="server">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
<TR>
<TD>
<asp:DataGrid id="DataGrid1" DataKeyField="id" runat="server" Width="50%" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" AutoGenerateColumns="False">
<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<ItemStyle ForeColor="#003399" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#CCCCFF" BackColor="#003399"></HeaderStyle>
<FooterStyle ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.id") %>' ID="Label1" NAME="Label1">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="姓名">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.username") %>' ID="Label2" NAME="Label2">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Email">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.email") %>' ID="Label3" NAME="Label3">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtEmail" Text='<%# DataBinder.Eval(Container, "DataItem.email") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="&lt;img src=images/save.gif border=0 alt='儲存'/&gt;" CancelText="&lt;img src=images/cancel.gif border=0 alt='取消'/&gt;" EditText="&lt;img src=images/edit.gif border=0 alt='編輯'/&gt;"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
</TD>
</TR>
<TR>
<TD></TD>
</TR>
<TR>
<TD></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;

namespace News
{
/// <summary>
/// DataGridEdit 的摘要說明。
/// </summary>
public class DataGridEdit : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
string ConnectionStr=ConfigurationSettings.AppSettings["connStr"];//連線資料庫

private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置使用者程式碼以初始化頁面
if(!IsPostBack)
{
BindGrid();
}
}

//繫結資料庫
private void BindGrid()
{
//定義資料連線物件,其中資料庫連線字串是在Web.Config檔案中定義的
SqlConnection SconnStr=new SqlConnection(ConnectionStr);
//建立資料介面卡物件
SqlDataAdapter sda=new SqlDataAdapter("select * from user_info",SconnStr);
//建立DataSet物件
DataSet ds=new DataSet();
try
{
//填充資料集
sda.Fill(ds,"user_info");

//進行資料繫結
DataGrid1.DataSource=ds.Tables["user_info"];
DataGrid1.DataBind();


}
catch(Exception error)
{
Response.Write(error.ToString());
}
finally{}
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:該呼叫是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 設計器支援所需的方法 - 不要使用程式碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//設定DataGrid控制元件的編輯項的索引為選擇的當前項
DataGrid1.EditItemIndex = e.Item.ItemIndex;
//資料繫結
BindGrid();
}

private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//取得編輯行的關鍵欄位的值
int empID=(int)DataGrid1.DataKeys[e.Item.ItemIndex];

//取得文字框中輸入的內容
TextBox newEmail = (TextBox)e.Item.FindControl("txtEmail");
//定義SQL語句
string sqlCom = "update user_info set email='" + newEmail.Text + "' where id="+empID.ToString();
//定義資料連線物件,其中資料庫連線字串是在Web.Config檔案中定義的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connStr"].ToString());
//定義命令物件
SqlCommand cmd = new SqlCommand(sqlCom,conn);
//開啟資料連線
conn.Open();
try
{
//執行SQL命令
cmd.ExecuteNonQuery();
//取消編輯
DataGrid1.EditItemIndex = -1;
BindGrid();
}
catch(Exception err)
{
//輸出異常資訊
Response.Write(err.ToString());
}
finally
{
//關閉連線物件
conn.Close();
}
}

private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//設定DataGrid控制元件的編輯項的索引為-1,既取消編輯
DataGrid1.EditItemIndex = -1;
//資料繫結
BindGrid();
}
}
}