本人原创,转载请注明地址 。
这篇文章主要是用代码方式使用GridView进行新增、修改、删除,新增是用弹出新窗体的方式,完成后关闭新增窗体并且刷新页面和GridView。
代码节选自本人的工程,具体的数据库和表可以自己建,方法参照下面的方法。
先在类里面定义一些参数和连接字符串:
string sConnString = "server=数据库IP地址;database='数据库名';uid='用户名';pwd='密码'";
SqlConnection Conn = new SqlConnection();
public static string sAddSql;
public string productTime;
public string productLineId;
public string DataType;
public string productNameId;
public string Side;
public string productIn;
public string productOut;
public string productEye;
public string productNum;
public string StartTime;
public string TimeSectID;然后写页面事件:
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
Bind(sAddSql);//绑定gridview的方法
}
}接着是绑定方法和弹出窗体方法:
public void Alert(string msg)//弹出提示框
...{
this.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script 
language='javascript'>alert('" + msg + "');</script>");
}
public void Bind(string sSql)//绑定事件
...{
Conn = new SqlConnection(sConnString);
SqlDataAdapter adapter = new SqlDataAdapter("select id,productTime as 生产日期,productLineId as 
生产线ID,DataType as 数据类型,productNameId as 产品名称ID,Side as 面次,productIn as 进数," +
"productOut as 出数,productEye as 人工,productNum as 合计,TimeSectID as 班次 from product" 
+ sSql, Conn);
Conn.Open();
DataSet ds = new DataSet();
adapter.Fill(ds);
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
Conn.Close();
}

GridView的编辑和取消编辑事件:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
...{
GridView1.EditIndex = e.NewEditIndex;
GridView1.Rows[e.NewEditIndex].Cells[4].Enabled = false;
GridView1.Rows[e.NewEditIndex].Cells[13].Enabled = false;
Bind(sAddSql);
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
...{
GridView1.EditIndex = -1;
Bind(sAddSql);
return;
}GridView修改和删除方法:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
...{
try
...{
GridViewRow row = GridView1.Rows[GridView1.EditIndex];
string id = ((TextBox)(row.Controls[4].Controls[0])).Text;
//string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
string productTime = ((TextBox)(row.Controls[5].Controls[0])).Text;
string productLineId = ((TextBox)(row.Controls[6].Controls[0])).Text;
string DataType = ((TextBox)(row.Controls[7].Controls[0])).Text;
string productNameId = ((TextBox)(row.Controls[8].Controls[0])).Text;
string Side = ((TextBox)(row.Controls[9].Controls[0])).Text;
string productIn = ((TextBox)(row.Controls[10].Controls[0])).Text;
string productOut = ((TextBox)(row.Controls[11].Controls[0])).Text;
string productEye = ((TextBox)(row.Controls[12].Controls[0])).Text;
string productNum = ((TextBox)(row.Controls[13].Controls[0])).Text;
string TimeSectID = ((TextBox)(row.Controls[14].Controls[0])).Text;
string sql = "update product set productTime='" + productTime +
"',productLineId=" + int.Parse(productLineId) + ",DataType=" + int.Parse(DataType) +
",productNameId=" + int.Parse(productNameId) + ",Side=" + int.Parse(Side) +
",productIn=" + int.Parse(productIn) + "," +
"productOut=" + int.Parse(productOut) + ",productEye=" + int.Parse(productEye) +
",TimeSectID=" + int.Parse(TimeSectID) + " where id=" + int.Parse(id);
Conn = new SqlConnection(sConnString);
SqlCommand Comm = new SqlCommand(sql, Conn);
Conn.Open();
Comm.ExecuteNonQuery();
e.Cancel = true;
GridView1.EditIndex = -1;
Bind(sAddSql);
Conn.Close();
}
catch (Exception ex)
...{
GridView1.EditIndex = -1;
Alert(ex.Message);
}
finally
...{
Conn.Dispose();
}
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
...{
string id = GridView1.Rows[e.RowIndex].Cells[4].Text;
string sql = "delete from product where id=" + int.Parse(id);
Conn = new SqlConnection(sConnString);
SqlCommand Comm = new SqlCommand(sql, Conn);
Conn.Open();
Comm.ExecuteNonQuery();
Bind(sAddSql);
Conn.Close();
}

鼠标移动到GridView任意行变色:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
...{
int i;
for (i = 0; i <= GridView1.Rows.Count; i++)
...{
//首先判断是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
...{
//bind style
e.Row.Attributes.Add("onmouseover", 
"oldcolor=this.style.backgroundColor;this.style.backgroundColor="#f3ed86";this.style.cursor='hand';");
e.Row.Attributes.Add("onmouseout", 
"this.style.backgroundColor=oldcolor;this.style.cursor='';");
//设置悬浮鼠标指针形状为"小手"
e.Row.Attributes["style"] = "Cursor:hand";
//单击行的任意列会自动选中此行,编辑时出现错误,需要有选择按钮
//e.Row.Attributes.Add("onclick", "__doPostBack('GridView1','Select$" + e.Row.RowIndex 
+ "')");
}
}
}
新增按钮的事件,弹出个固定大小的窗体:
protected void Button1_Click(object sender, EventArgs e)
...{
Response.Write("<script>window.open
('ProductAdd.aspx','_blank','height=330,width=300,scrollbars=no')</script>");
}
新建一个新增窗体,我这个新增窗体其实就是一个表格-里面由Label和TextBox组成的,页面代码我就不列出来了。
新增窗体的页面事件(绑定了2个下拉框):
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
Button1.Attributes["OnClick"] = "return confirm('是否新增生产信息?')";
DateControl1.Text = System.DateTime.Now.Date.ToShortDateString();
string sSql = "select id,name from productLine order by id asc";
Conn = new SqlConnection(sConnString); ;
Conn.Open();
SqlDataAdapter sqlAdpter = new SqlDataAdapter(sSql, Conn);
DataSet ds = new DataSet();
sqlAdpter.Fill(ds);
DropDownList1.DataSource = ds.Tables[0].DefaultView;
DropDownList1.DataTextField = "name";
DropDownList1.DataValueField = "id";
DropDownList1.DataBind();
sSql = "select id,name from productName order by id asc";
sqlAdpter = new SqlDataAdapter(sSql, Conn);
ds = new DataSet();
sqlAdpter.Fill(ds);
DropDownList3.DataSource = ds.Tables[0].DefaultView;
DropDownList3.DataTextField = "id";
DropDownList3.DataValueField = "id";
DropDownList3.DataBind();
Conn.Close();
}
}

新增按钮的事件:
protected void Button1_Click(object sender, EventArgs e)
...{ 
if (DateControl1.Text.Trim()=="")
...{
Alert("生产日期不能为空!");
return;
}
if (DropDownList1.Text.Trim() == "")
...{
Alert("生产线ID不能为空!");
return;
}
TextBox5.Text = Convert.ToString(int.Parse(TextBox3.Text.Trim()) + int.Parse
(TextBox4.Text.Trim()));
string sSql = "insert into product 
(productTime,productLineId,DataType,productNameId,Side,productIn,productOut,productEye,TimeSectID)
values('"+
DateControl1.Text+"',"+int.Parse(DropDownList1.SelectedValue)+","+int.Parse
(DropDownList2.SelectedValue)+","+int.Parse(DropDownList3.SelectedValue)+
"," + int.Parse(TextBox1.Text) + "," + int.Parse(TextBox2.Text) +","+int.Parse
(TextBox3.Text) +","+int.Parse(TextBox4.Text) +
","+int.Parse(DropDownList4.SelectedValue)+ ")";
Conn = new SqlConnection(sConnString);
Conn.Open();
SqlCommand sqlComm = new SqlCommand(sSql,Conn);
sqlComm.ExecuteNonQuery();
Conn.Close();
//Response.Write("<script>window.opener.location.reload(true);window.close()</script>");
Response.Write
("<script>window.opener.location.href=window.opener.location.href;window.location.reload</script>");
Response.Write("<script>window.close()</script>");
}

上面的方法基本实现了GridView代码方式的新增、修改、删除,里面还包含了弹出提示窗口、鼠标移动到GridView行
变色、关闭新窗体刷新打开页面的等一些技巧。
本文介绍了如何通过代码实现GridView的增删改功能,特别是使用弹出窗体进行新增操作,并在完成时关闭窗体及刷新主页面。详细讲解了页面事件、绑定方法、编辑与删除事件处理,以及窗体交互的相关代码实现。
3403

被折叠的 条评论
为什么被折叠?



