GridView禁用掉viewstate之后的新建,编辑,删除

示例程序为一个超级Mini的图书管理,DB中只有一个名为"tableBook"的表,里面也只有三个字段ID(autonumber),bookName,BookAuthor。效果图:

Main.aspx: 

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Main"  %>

<! 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 > Untitled Page </ title >
    
    
< script  type ="text/javascript" >
    
        
//将当前行生成的文本框中的值存入相应的控件,并点击“修改”
        function Update(id)
        
{
            
if(confirm('确定要修改吗?'))
            
{
                document.getElementById(
'hiddenId').value = id;
                document.getElementById(
'hiddenName').value = document.getElementById('newName').value;
                document.getElementById(
'hiddenAuthor').value = document.getElementById('newAuthor').value;
                document.getElementById(
'bnUpdate').click();
            }

        }

        
        
//将当前行中的ID放入hiddenId并点击“删除”
        function Delete(id)
        
{
            
if(confirm('确定要删除吗?'))
            
{
                document.getElementById(
'hiddenId').value = id;
                document.getElementById(
'bnDelete').click();
            }

        }

        
        
//将当前行的RowIndx放入GVIndex并点击bnShowTextBox在当前行显示文本框
        function ShowTextBox(gvIndex)
        
{
            document.getElementById(
'GVIndex').value = gvIndex;
            document.getElementById(
'bnShowTextBox').click();
        }

        
        
//点击bnShowTextBox4New,显示用于创建的控件
        function ShowControl4New()
        
{
            document.getElementById(
'bnShowTextBox4New').click();
        }

        
        
//将新建数据暂存至控件并点击“创建”
        function CreateNew()
        
{
            
var newName = document.getElementById('createNewName').value;
            
var newAuthor = document.getElementById('createNewAuthor').value;
            
//检查是否为空
            if(newName == "" || newAuthor == "")
            
{
                alert(
'不可为空');
                
return;
            }

            document.getElementById(
'hiddenName').value = newName;
            document.getElementById(
'hiddenAuthor').value = newAuthor;
            document.getElementById(
'bnCreateNew').click();
        }


    
</ script >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< table  width ="80%" >
            
< tr >
                
< td  align ="center" >
                 
< asp:GridView  ID ="gvBook"  runat ="server"  CellPadding ="4"  ForeColor ="#333333"  GridLines ="None"  OnRowDataBound ="gvBook_RowDataBound"  ShowFooter ="True"  EnableViewState ="False"  OnRowCreated ="gvBook_RowCreated" >
                    
< FooterStyle  BackColor ="#990000"  Font-Bold ="True"  ForeColor ="White"   />
                    
< RowStyle  BackColor ="#FFFBD6"  ForeColor ="#333333"   />
                    
< PagerStyle  BackColor ="#FFCC66"  ForeColor ="#333333"  HorizontalAlign ="Center"   />
                    
< SelectedRowStyle  BackColor ="#FFCC66"  Font-Bold ="True"  ForeColor ="Navy"   />
                    
< HeaderStyle  BackColor ="#990000"  Font-Bold ="True"  ForeColor ="White"   />
                    
< AlternatingRowStyle  BackColor ="White"   />
                     
< Columns >
                         
< asp:TemplateField  HeaderText ="操作" ></ asp:TemplateField >
                     
</ Columns >
                
</ asp:GridView >
                
</ td >
            
</ tr >
        
</ table >
    
</ div >
        
< input  id ="hiddenId"  style ="display:none"  type ="text"  runat ="server"   />
        
< input  id ="hiddenName"  style ="display:none"  type ="text"  runat ="server"   />
        
< input  id ="hiddenAuthor"  style ="display:none"  type ="text"  runat ="server"   />
        
< input  id ="GVIndex"  style ="display:none"  type ="text"  runat ="server"   />
        
< asp:Button  ID ="bnUpdate"  runat ="server"  style ="display:none"  Text ="Update"  OnClick ="bnUpdate_Click"   />
        
< asp:Button  ID ="bnShowTextBox"  runat ="server"  style ="display:none"  Text ="ShowTextBox"  OnClick ="bnShowTextBox_Click"   />
        
< asp:Button  ID ="bnShowTextBox4New"  runat ="server"  OnClick ="bnShowTextBox4New_Click"  Style ="display:none"  Text ="ShowTextBox4New"   />
        
< asp:Button  ID ="bnCreateNew"  runat ="server"  OnClick ="bnCreateNew_Click"  Style ="display:none"  Text ="CreateNew"   />
        
< asp:Button  ID ="bnDelete"  runat ="server"  OnClick ="bnDelete_Click"  Style ="display:none"  Text ="Delete"   />
    
</ form >
</ body >
</ html >

Main.aspx.cs:

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
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;

public   partial   class  Main : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        GVBind();
    }


    
/// <summary>
    
/// 绑定GridView数据源
    
/// </summary>

    protected void GVBind()
    
{
        
if (CBook.GetData() != null)
        
{
            gvBook.DataSource 
= CBook.GetData();
            gvBook.DataBind();
        }

    }


    
//向各行“操作”列写入“功能键”
    protected void gvBook_RowDataBound(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            e.Row.Cells[
0].Text = "<a href='JavaScript:ShowControl4New()'>新建</a>&nbsp;&nbsp;";
            e.Row.Cells[
0].Text += "<a href='JavaScript:ShowTextBox(" + e.Row.RowIndex + ")'>修改</a>&nbsp;&nbsp;";
            e.Row.Cells[
0].Text += "<a href='JavaScript:Delete(" + e.Row.Cells[1].Text + ")'>删除</a>";
        }

    }


    
//显示用于修改的文本框
    protected void bnShowTextBox_Click(object sender, EventArgs e)
    
{
        
int index;
        
if (Int32.TryParse(GVIndex.Value, out index))
        
{
            gvBook.Rows[index].Cells[
2].Text = "<input id='newName' type='text' value='" + gvBook.Rows[index].Cells[2].Text + "' />";
            gvBook.Rows[index].Cells[
3].Text = "<input id='newAuthor' type='text' value='" + gvBook.Rows[index].Cells[3].Text + "' />";
            gvBook.Rows[index].Cells[
0].Text = "<a href='JavaScript:Update(" + gvBook.Rows[index].Cells[1].Text + ")'>确定</a>";
        }

    }

    
    
//执行修改
    protected void bnUpdate_Click(object sender, EventArgs e)
    
{
        
try
        
{
            
int id;
            
if (Int32.TryParse(hiddenId.Value, out id) && hiddenName.Value != string.Empty && hiddenAuthor.Value != string.Empty)
            
{
                CBook.Update(id, hiddenName.Value, hiddenAuthor.Value);
                CBook.ShowMessage(
this"修改成功");
                GVBind();
            }

            
else
            
{
                CBook.ShowMessage(
this"输入有误,请检查");
            }

        }

        
catch (Exception ex)
        
{
            CBook.ShowMessage(
this, ex.Message);
        }

    }


    
//显示用于创建的文本框及按钮
    protected void bnShowTextBox4New_Click(object sender, EventArgs e)
    
{
        gvBook.FooterRow.Cells[
0].Text = "请输入新记录信息:";
        gvBook.FooterRow.Cells[
1].Text = "<input id='createNewName' type='text' size='15' />";
        gvBook.FooterRow.Cells[
2].Text = "<input id='createNewAuthor' type='text'size='15' /> <input id='createNew' type='button' οnclick='CreateNew()' value='确定' />";
    }


    
//执行创建
    protected void bnCreateNew_Click(object sender, EventArgs e)
    
{
        
try
        
{
            CBook.Insert(hiddenName.Value, hiddenAuthor.Value);
            CBook.ShowMessage(
this"创建成功");
            GVBind();
        }

        
catch(Exception ex)
        
{
            CBook.ShowMessage(
this, ex.Message);
        }

    }


    
//执行删除
    protected void bnDelete_Click(object sender, EventArgs e)
    
{
        
try
        
{
            
int id;
            
if (Int32.TryParse(hiddenId.Value, out id))
            
{
                CBook.Delete(id);
                CBook.ShowMessage(
this"删除成功");
                GVBind();
            }

        }

        
catch (Exception ex)
        
{
            CBook.ShowMessage(
this, ex.Message);
        }

    }


    
//隐藏ID列
    protected void gvBook_RowCreated(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
        
{
            e.Row.Cells[
1].Visible = false;
        }

    }

}

CBook.cs:

using  System;
using  System.Data;
using  System.Data.OleDb;
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;

/// <summary>
/// Summary description for CBook
/// </summary>

public   class  CBook
{
    
/// <summary>
    
/// DB连接字符串
    
/// </summary>

    private static string connString = System.Configuration.ConfigurationManager.AppSettings["provider"].ToString() 
                              
+ System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
    
public CBook()
    
{
        
//
        
// TODO: Add constructor logic here
        
//
    }


    
/// <summary>
    
/// Execute sql NonQuery(insert,delete,update)
    
/// </summary>
    
/// <param name="sql">sql</param>
    
/// <param name="parameters">OleDbParameter数组</param>

    private static void ExeNonQuery(string sql, OleDbParameter[] parameters)
    
{
        OleDbConnection conn 
= new OleDbConnection(connString);
        
try
        
{
            conn.Open();

            OleDbCommand cmd 
= new OleDbCommand(sql, conn);

            cmd.Parameters.AddRange(parameters);
            cmd.ExecuteNonQuery();
        }

        
catch
        
{
            
throw;
        }

        
finally
        
{
            conn.Close();
        }

    }


    
/// <summary>
    
/// 修改
    
/// </summary>

    public static void Update(int id, string bookName, string author)
    
{
        
string sql = "update tableBook set BookName=@bookName,BookAuthor=@author where ID=@id";

        OleDbParameter[] parameters 
= new OleDbParameter[3];
        parameters[
0= new OleDbParameter("@bookName", bookName);
        parameters[
1= new OleDbParameter("@author", author);
        parameters[
2= new OleDbParameter("@id", id);

        ExeNonQuery(sql, parameters);
    }


    
/// <summary>
    
/// 插入
    
/// </summary>

    public static void Insert(string bookName, string author)
    
{
        
string sql = "insert into tableBook (bookName,BookAuthor)values(@bookName,@author)";

        OleDbParameter[] parameters 
= new OleDbParameter[2];
        parameters[
0= new OleDbParameter("@bookName", bookName);
        parameters[
1= new OleDbParameter("@author", author);

        ExeNonQuery(sql, parameters);
    }


    
/// <summary>
    
/// 删除
    
/// </summary>
    
/// <param name="id"></param>

    public static void Delete(int id)
    
{
        
string sql = "delete from tableBook where ID=@id";
        OleDbParameter paraID 
= new OleDbParameter("@id", id);

        ExeNonQuery(sql, 
new OleDbParameter[] { paraID });
    }

    
/// <summary>
    
/// 返回DB中所有数据
    
/// </summary>
    
/// <returns></returns>

    public static DataTable GetData()
    
{
        OleDbConnection conn 
= new OleDbConnection(connString);
        
try
        
{
            conn.Open();
            
string sql = "select * from tableBook";
            OleDbDataAdapter adapter 
= new OleDbDataAdapter(sql, conn);
            DataSet ds 
= new DataSet();
            adapter.Fill(ds, 
"bookTable");
            DataTable dt 
= ds.Tables[0];
            
return dt;
        }

        
catch
        
{
            
throw;
            
return null;
        }

        
finally
        
{
            conn.Close();
        }

    }


    
public static void ShowMessage(Page page, string msgInfo)
    
{
        page.Response.Write(
"<script>alert('" + msgInfo + "')</script>");
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值