GridView代码方式新增、修改、删除(新增弹出窗体,完成后关闭并刷新主页面)

本文介绍了如何通过代码实现GridView的增删改功能,特别是使用弹出窗体进行新增操作,并在完成时关闭窗体及刷新主页面。详细讲解了页面事件、绑定方法、编辑与删除事件处理,以及窗体交互的相关代码实现。

本人原创,转载请注明地址 。

这篇文章主要是用代码方式使用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行

变色、关闭新窗体刷新打开页面的等一些技巧。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值