@个人原创,仅供参考。有问题可留言。
@全体成员:提供据体图布局和源代码供大家参考,如有不理解的地方可以下载压缩包体验。
个人原创,仅供参考。
压缩包地址:https://download.csdn.net/download/ganyonjie/13697083 欢迎下载
最后实现后的界面如下:
- 数据列的新增,左上栏表示控件的类型,左下为新增的列,右边为属性。
- 连接sql数据库:
实现执行sql 命令的语句,如插入删除:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
public int cmd(string sql) {
# 声明
SqlConnection con = new SqlConnection();
con.ConnectionString = "server =.; database = System; integrated security = SSPI; uid = sa; pwd = sa";
con.Open();
# 执行sql
SqlCommand sqlcmd = new SqlCommand(sql, con);
int count = 0;
try{
count = sqlcmd.ExecuteNonQuery();
}
# 关闭连接
con.Close();
# 返回执行成功的条数
return count;
}
实现查询等需要返回数据的操作:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
public DataTable searchtable(string sql) {
# 变量声明
SqlConnection con = new SqlConnection();
con.ConnectionString = "server =.; database = System; integrated security = SSPI; uid = sa; pwd = gt";
con.Open();
# 获取数据
SqlCommand sqlcmd = new SqlCommand(sql, con);
SqlDataReader read = sqlcmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(read);
# 关闭连接资源
read.Close();
con.Close();
return dt;
}
实现界面数据刷新操作:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void Refresh(string sql = null,string sort = null)
{
# 初始化变量
sql = sql ?? "select * from Patient";
sort = sort ?? "id_card ASC";
this.GridView1.DataSourceID = null;
# 将取到的数据进行排序
DataView view = searchtable(sql).DefaultView;
view.Sort = sort;
# 数据绑定
GridView1.DataSource = view;
GridView1.DataBind();
}
- 实现点击对应的表头产生排序的方法:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void Page_Load(object sender, EventArgs e)
{
# 程序加载时默认升序排序
if (!IsPostBack)
{
ViewState["OrderDire"] = "ASC";
this.Refresh();
}
}
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
# 实现前后两次排序相反
if (ViewState["OrderDire"].ToString() == "ASC")
ViewState["OrderDire"] = "DESC";
else
ViewState["OrderDire"] = "ASC";
# 舒适化排序方法
string s = e.SortExpression + " " + (string)ViewState["OrderDire"];
# 刷新数据
this.Refresh(null,s);
}
- 实现按下查询按钮筛选结果操作:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void Button1_Click(object sender, EventArgs e)
{
string sql = null;
# 获取主键
string name = GridView1.Columns[0].SortExpression;
if (TextBox1.Text.Trim()!="")
sql = "select * from Patient where "+name+"='"+TextBox1.Text.Trim()+"'";
# 数据刷新
this.Refresh(sql);
}
- 实现页面跳转功能:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void Button2_Click(object sender, EventArgs e)
{
# 通过server跳转页面
Server.Transfer("./PatientInformation.aspx", true);
}
- 实现点击对应行的删除按钮执行删除功能:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
# 获取主键信息
string id = GridView1.Rows[e.RowIndex].Cells[0].Text.ToString().Trim();
string name = GridView1.Columns[0].SortExpression;
string sql = "delete from Patient where "+name+" = '"+id+"'";
# 执行sql语句
cmd(sql);
# 数据刷新
this.Refresh();
}
- 实现点击对应行的编辑按钮启用编辑功能:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
# 将选中列更改为输入框
GridView1.EditIndex = e.NewEditIndex;
# 数据刷新
this.Refresh();
}
- 实现点击对应行的更新按钮更新数据:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
# 获取主键的name和值 表格中存在的最大列数
string id = GridView1.Rows[e.RowIndex].Cells[0].Text.ToString().Trim();
string name = GridView1.Columns[0].SortExpression;
int max = GridView1.Rows[e.RowIndex].Cells.Count - max_buttonLine;
# 对sql语句进行拼接
string sql = "update Patient set ";
for (int i = 1; i < max; i++)
{
# 排除单元格为空的情况
# Server.HtmlDecode增加安全性
if (GridView1.Rows[e.RowIndex].Cells[i].Text.Trim() != " ")
sql += GridView1.Columns[i].SortExpression + " = '" + Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[i].Controls[0]).Text.ToString().Trim()) + "',";
}
# 去掉最后的,
sql = sql.Substring(0, sql.Length - 1);
sql += " where " + name + " = '" + id + "'";
try
{
# 执行sql语句
cmd(sql);
}
catch (Exception ex)
{
# 弹出错误提示框
Response.Write("<script>alert('编辑出错,请重新填写');</script>");
}
# 退出编辑模式
GridView1.EditIndex = -1;
# 刷新数据
this.Refresh();
}
- 实现点击对应行取消按钮退出编辑状态:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
# 退出编辑模式
GridView1.EditIndex = -1;
# 刷新数据
this.Refresh();
}
- 实现加载时刷新表格样式:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
# 获取当前表格中的最大列数
int max = e.Row.Cells.Count;
# 按列对表格设置样式
for(int i=0;i< max; i++)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[i].Attributes.Add("style", "border:1px dotted red");
}
}
//首先判断是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{
//当鼠标停留时更改背景色
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A966'");
//当鼠标移开时还原背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
}
}
- 实现数据多情况下的分页功能:
/* author:win杰
* time:2020/12/12
* @版权所有,仅供参考
*/
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
# 开启简单排序功能
GridView1.AllowSorting = true;
# 获取新的index值
GridView1.PageIndex = e.NewPageIndex;
# 数据绑定
GridView1.DataBind();
}
至此,完。谢谢观看。