GridView三层结构的增删改查

一个吃瓜群众 2012-05-19 02:59:54
初学ASP.NET,想做一个基本的三层结构那种的Gridview的增删改查。
Default.aspx BLL DAL MODEL
数据库表名是users 字段是 uid uname udh
MODEL 定义类Users 属性是UserID UserName UserDH

拖一个gridview控件 这控件让我不会用了 我添加的编辑按钮,在单击之后,数据部分不变成Textbox,不能修改;我是在gridview的一个属性里找到自动生成Edit按钮的,这个就可以单击之后变textbox。
不知道自己手动添加的那个怎么弄。

还有就是我下边放了一个查询按钮,查uid的,想查出来显示到gridview上,但是当前gridview中是查询全表的数据。
我不知道在这个按钮事件下怎么写代码,把查询出来的一行赋给gridview,让他只显示这查询出来的一行。


求gridview三层结构的代码,不要DBHelper的那个,我要ADO.net写的。
学习基础。
网上找的都不全,我也看了gridview72变化那个,我还想看看下边是怎么写的。
求达人给写一个,谢谢。
...全文
748 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HTzhangxuebing 2012-05-19
  • 打赏
  • 举报
回复
就简单的搭一个三层,各层之间相互引用一下,然后代码该怎么写就怎么写,要的话可以联系我,给你写一个。但是我还是建议LZ你自己动手写写然后自己会提高的快一些!
AlenCheng 2012-05-19
  • 打赏
  • 举报
回复
另外三层之间的关系要弄清楚了就行:
1、数据访问层DAL医引用实体层model
2、业务逻辑层BLL引用DAL和model
3、显示层UI引用BLL后会自动引用其它层
AlenCheng 2012-05-19
  • 打赏
  • 举报
回复
上面代码没有测试,但是基本三层的思路就是这样了。。

GridView就是要找到相应的控件里的值就行。

其实这个你还是自己整理下吧。至于那个生成器,初学者建议不要用了
AlenCheng 2012-05-19
  • 打赏
  • 举报
回复
//Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace UserMS_Models
{
/// <summary>
/// 用户信息实体
/// </summary>
public class User_Entity
{
private int _userID;

public int UserID
{
get { return _userID; }
set { _userID = value; }
}
private string _userName;

public string UserName
{
get { return _userName; }
set { _userName = value; }
}
private string _userDH;

public string UserDH
{
get { return _userDH; }
set { _userDH = value; }
}
}
}


DAL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UserMS_Models;
using System.Data.SqlClient;

namespace User_Services
{
/// <summary>
/// 用户信息数据访问层
/// </summary>
public class User_Service
{
private static string strCon = "server=.;uid=sa;pwd=svse;database=..";

/// <summary>
/// 添加
/// </summary>
/// <param name="user">用户实体</param>
/// <returns>true添加成功,fals添加失败</returns>
public static bool Insert(User_Entity user)
{
string sql = "INSERT INTO ....";
SqlConnection conn = new SqlConnection(strCon);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int count = cmd.ExecuteNonQuery();
conn.Close();
return count > 0;
}

//修改
public static bool Update(User_Entity user)
{
//同添加
}

//删除
public static bool Delete(int uid)
{
//基本一样
}
}
}



BLL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UserMS_Models;
using User_Services;

namespace UserMS_Manage
{
/// <summary>
/// 用户信息业务逻辑层
/// </summary>
public class User_Manage
{
/// <summary>
/// 添加
/// </summary>
/// <param name="user">用户实体</param>
/// <returns>true添加成功,fals添加失败</returns>
public static bool Insert(User_Entity user)
{
return User_Service.Insert(user);
}

//修改
public static bool Update(User_Entity user)
{
//基本相同
}

//删除
public static bool Delete(int uid)
{
//基本相同
}
}
}



UI

.cs
/// <summary>
///删除
/// </summary>
protected void grdUserInfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取用户编号
string id = this.grdUserInfo.DataKeys[e.RowIndex].Value.ToString();
User_Manage.Delete(int.Parse(id));
}
/// <summary>
/// 编辑
/// </summary>
protected void grdUserInfo_RowEditing(object sender, GridViewEditEventArgs e)
{
this.grdUserInfo.EditIndex = e.NewEditIndex;
}
/// <summary>
/// 修改
/// </summary>
protected void grdUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//获取数据
TextBox txtName = this.grdUserInfo.Rows[e.RowIndex].Controls[1].FindControl("txtName");
string name = name.Text;
//其余数据同样找法,也可通过其他方式查找。。。
//...
//...
//将数据封装
User_Entity user = new User_Entity();
user.UserName = name;
//...
if (User_Manage.Update(user))
{
//true
}
else
{
//false
}
}
protected void grdUserInfo_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.grdUserInfo.EditIndex = -1;
//根据情况将数据进行重新绑定。。。
}

.aspx
<asp:GridView ID="grdUserInfo" runat="server" AutoGenerateColumns="False"
DataKeyNames="userID" onrowdeleting="grdUserInfo_RowDeleting"
onrowediting="grdUserInfo_RowEditing" onrowupdating="grdUserInfo_RowUpdating"
Width="341px" onrowcancelingedit="grdUserInfo_RowCancelingEdit">
<Columns>
<asp:BoundField DataField="userName" HeaderText="ID" />
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" ontextchanged="TextBox1_TextChanged"
Text='<%# Eval("userName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("userName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DH">
<EditItemTemplate>
<asp:TextBox ID="txtDH" runat="server" Text='<%# Eval("userDH") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDH" runat="server" Text='<%# Eval("userDH") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField CommandName="delete" Text="删 除" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
一个吃瓜群众 2012-05-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
就简单的搭一个三层,各层之间相互引用一下,然后代码该怎么写就怎么写,要的话可以联系我,给你写一个。但是我还是建议LZ你自己动手写写然后自己会提高的快一些!
[/Quote]
嗯 我是自己手写的 但是有点乱
就想看看谁给写个标准点的 思路清晰的
嘿嘿
一个吃瓜群众 2012-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
动软生成器生成就行了,自己稍作修改

引用 1 楼 的回复:

就是给写个三层结构的例子,MODEL DAL BLL default.aspx.cs
添加 删除 修改(更新)查询(GetList) 单个查询(Get)
Orz
[/Quote]
还有那种生成器? 我去找找看。

还有就是我想问一下,那个单个查询那个怎么让gridview现实查询出来的那一条呢。
zhangdaowu5 2012-05-19
  • 打赏
  • 举报
回复
就简单的搭一个三层,各层之间相互引用一下,然后代码该怎么写就怎么写,要的话可以联系我,给你写一个。但是我还是建议LZ你自己动手写写然后自己会提高的快一些!
tan598121925 2012-05-19
  • 打赏
  • 举报
回复
动软生成器生成就行了,自己稍作修改
[Quote=引用 1 楼 的回复:]

就是给写个三层结构的例子,MODEL DAL BLL default.aspx.cs
添加 删除 修改(更新)查询(GetList) 单个查询(Get)
Orz
[/Quote]
tan598121925 2012-05-19
  • 打赏
  • 举报
回复
条件拼接起来就行了

例:string sql=" 1=1 ";
if(!string.IsNullOrEmpty(this.uid.Text)){
sql+=" and uid="+uid.Text;
}
一个吃瓜群众 2012-05-19
  • 打赏
  • 举报
回复
就是给写个三层结构的例子,MODEL DAL BLL default.aspx.cs
添加 删除 修改(更新)查询(GetList) 单个查询(Get)
Orz

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧