Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]

时间:2022-05-30 22:02:07

[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试]

一、增删改查

cmd.ExecuteReader();执行查询,所有sql语句的查询都用这个方法;

      cmd.ExecuteNonQuery();执行所有sql语句的增删改都用这个方法;

  1       <div>
<table>
<tr>
<td> 用户名:</td>
<td>
<asp:TextBox ID="txtSUserName" runat="server"></asp:TextBox>
</td>
<td>班级:</td>
<td>
<asp:DropDownList ID="ddlselPhase" runat="server">
<asp:ListItem>---请选择---</asp:ListItem>
<asp:ListItem>.NET高级班01期</asp:ListItem>
<asp:ListItem>.NET高级班02期</asp:ListItem>
<asp:ListItem>.NET讲师</asp:ListItem>
<asp:ListItem>.NET网站开发01期</asp:ListItem>
<asp:ListItem>.NET网站开发02期</asp:ListItem>
<asp:ListItem>.NET网站开发03期</asp:ListItem>
<asp:ListItem>.NET网站开发04期</asp:ListItem>
<asp:ListItem>.NET网站开发05期</asp:ListItem>
<asp:ListItem>.NET网站开发06期</asp:ListItem>
<asp:ListItem>.NET网站开发07期</asp:ListItem>
<asp:ListItem>.NET网站开发08期</asp:ListItem>
<asp:ListItem>.NET网站开发09期</asp:ListItem>
<asp:ListItem>.NET网站开发10期</asp:ListItem>
<asp:ListItem>.NET网站开发11期</asp:ListItem>
<asp:ListItem>.NET网站开发12期</asp:ListItem>
<asp:ListItem>.NET网站开发13期</asp:ListItem>
<asp:ListItem>.NET网站开发14期</asp:ListItem>
<asp:ListItem>.NET网站开发15期</asp:ListItem>
<asp:ListItem>.NET网站开发16期</asp:ListItem>
<asp:ListItem>java第一期</asp:ListItem>
<asp:ListItem>JAVA讲师</asp:ListItem>
<asp:ListItem>ps设计01期</asp:ListItem>
<asp:ListItem>ps设计02期</asp:ListItem>
<asp:ListItem>ps设计03期</asp:ListItem>
<asp:ListItem>网页前端01期</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:Button ID="btnSel" runat="server" Text="查询" OnClick="btnSel_Click" />
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<td> 用户名:</td>
<td>
<asp:TextBox ID="txtAddUserName" runat="server"></asp:TextBox>
</td>
<td> 密码:</td>
<td>
<asp:TextBox ID="txtAddPwd" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td> QQ:</td>
<td>
<asp:TextBox ID="txtAddQq" runat="server"></asp:TextBox>
</td>
<td>班级:</td>
<td>
<asp:DropDownList ID="ddlAddPhase" runat="server">
<asp:ListItem>---请选择---</asp:ListItem>
<asp:ListItem>.NET高级班01期</asp:ListItem>
<asp:ListItem>.NET高级班02期</asp:ListItem>
<asp:ListItem>.NET讲师</asp:ListItem>
<asp:ListItem>.NET网站开发01期</asp:ListItem>
<asp:ListItem>.NET网站开发02期</asp:ListItem>
<asp:ListItem>.NET网站开发03期</asp:ListItem>
<asp:ListItem>.NET网站开发04期</asp:ListItem>
<asp:ListItem>.NET网站开发05期</asp:ListItem>
<asp:ListItem>.NET网站开发06期</asp:ListItem>
<asp:ListItem>.NET网站开发07期</asp:ListItem>
<asp:ListItem>.NET网站开发08期</asp:ListItem>
<asp:ListItem>.NET网站开发09期</asp:ListItem>
<asp:ListItem>.NET网站开发10期</asp:ListItem>
<asp:ListItem>.NET网站开发11期</asp:ListItem>
<asp:ListItem>.NET网站开发12期</asp:ListItem>
<asp:ListItem>.NET网站开发13期</asp:ListItem>
<asp:ListItem>.NET网站开发14期</asp:ListItem>
<asp:ListItem>.NET网站开发15期</asp:ListItem>
<asp:ListItem>.NET网站开发16期</asp:ListItem>
<asp:ListItem>java第一期</asp:ListItem>
<asp:ListItem>JAVA讲师</asp:ListItem>
<asp:ListItem>ps设计01期</asp:ListItem>
<asp:ListItem>ps设计02期</asp:ListItem>
<asp:ListItem>ps设计03期</asp:ListItem>
<asp:ListItem>网页前端01期</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:Button ID="btnAdd" runat="server" Text="添加" OnClick="btnAdd_Click" style="height: 21px" />
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<td>用户ID:</td>
<td>
<asp:TextBox ID="txtDUId" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnD" runat="server" Text="删除" OnClick="btnD_Click" />
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<td>ID:</td>
<td>
<asp:TextBox ID="txtUId" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtUUserName" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnU" runat="server" Text="更新" OnClick="btnU_Click" />
</td>
</tr>
</table>
</div>
<div>
<asp:GridView ID="GriVShow" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Userid" HeaderText="用户ID" />
<asp:BoundField DataField="UserName" HeaderText="用户名:" />
<asp:BoundField DataField="phonenum" HeaderText="电话号码" />
<asp:BoundField DataField="sex" HeaderText="性别" />
<asp:BoundField DataField="phase" HeaderText="班级" />
<asp:BoundField DataField="qq" HeaderText="QQ" />
<asp:BoundField DataField="Message" HeaderText="信息" />
<asp:BoundField DataField="HeadPic" HeaderText="头像" />
<asp:BoundField DataField="CreatedTime" HeaderText="创建时间" />
<asp:TemplateField HeaderText="详情">
<ItemTemplate>
<a href="UserInforManagerContext.aspx?Id=<%#Eval("UserId")%>">详情</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
   public partial class UserInforManager : System.Web.UI.Page
{
string constr = ConfigurationManager.ConnectionStrings["sq_r"].ToString();
SqlConnection con = null;
SqlCommand cmd = null;
SqlDataReader read = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack))
{
BindUserInfor();
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindUserInfor()
{
try
{
//string strstring = "select Userid,UserName,phonenum,sex,phase,qq,Message,HeadPic,CreatedTime from UserInfor where 1=1";
using (con = new SqlConnection(constr))
{
con.Open();
cmd = new SqlCommand(GetSql(), con);
using (read = cmd.ExecuteReader())
{
//开始读以上sql数据,这句话一定要有,如果把它取出来的话是需要读的,但是这地方我只想它把内容赋值给gridview
//if (read.Read())
//{
//}
//但是这地方我只想它把内容赋值给gridview
//内容取出来之后,我希望有东西可以接收它的内容
GriVShow.DataSource = read;
GriVShow.DataBind();
}
}
}
catch (Exception ex)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
} protected void btnSel_Click(object sender, EventArgs e)
{
BindUserInfor();
}
/// <summary>
/// 获取SQL
/// </summary>
/// <returns></returns>
public string GetSql()
{
//string username = txtSUserName.Text.Trim();
//string phase = ddlselPhase.SelectedValue;
StringBuilder sb = new StringBuilder();
sb.Append("select Userid,UserName,phonenum,sex,phase,qq,Message,HeadPic,CreatedTime from UserInfor where 1=1");
if (!string.IsNullOrEmpty(txtSUserName.Text.Trim()))
{
sb.Append(string.Format("and UserName='{0}'", txtSUserName.Text.Trim()));
}
if (ddlselPhase.SelectedIndex > )
{
sb.Append(string.Format("and phase='{0}'", ddlselPhase.SelectedValue));
}
return sb.ToString();
} protected void btnAdd_Click(object sender, EventArgs e)
{
try
{
string addUserName = txtAddUserName.Text.Trim();
string addPwd = txtAddPwd.Text.Trim();
string addqq = txtAddQq.Text.Trim();
string addPhase = ddlAddPhase.SelectedIndex > ? ddlAddPhase.SelectedValue : "";
if (!string.IsNullOrEmpty(addUserName))
{
using (con = new SqlConnection(constr))
{
con.Open();
string sstring1 = string.Format("insert into UserInfor(UserName,Pwd,QQ,Phase)values('{0}','{1}','{2}','{3}')", addUserName, addPwd, addqq, addPhase);
cmd = new SqlCommand(sstring1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('插入成功!');</script>");
}
BindUserInfor();
}
}
else
{
Response.Write("<script>alert('请输入内容');</script>");
}
}
catch (Exception)
{
Response.Write("网页正在维护!");
}
} protected void btnD_Click(object sender, EventArgs e)
{
int UserId = txtDUId.Text.Trim() == "" ? : Convert.ToInt32(txtDUId.Text.Trim());
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select UserId from UserInfor where UserId='{0}'", UserId);
cmd = new SqlCommand(ssql, con);
read = cmd.ExecuteReader();
if (read.HasRows)
{
read.Dispose();
read.Close();
string sstring1 = string.Format("delete UserInfor where UserId='{0}'", UserId);
cmd = new SqlCommand(sstring1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('删除成功!');</script>");
}
BindUserInfor();
}
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception ex)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
} protected void btnU_Click(object sender, EventArgs e)
{
int uId = txtUId.Text.Trim()==""?:Convert.ToInt32(txtUId.Text.Trim());
string uUserName = txtUUserName.Text.Trim();
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select UserId from UserInfor where UserId='{0}'", uId);
cmd = new SqlCommand(ssql, con);
read = cmd.ExecuteReader();
if (read.HasRows)
{
read.Dispose();
read.Close();
string ssql1 = string.Format("update UserInfor set UserName='{0}' where UserId='{1}'", uUserName, uId);
cmd = new SqlCommand(ssql1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("更新成功!");
}
BindUserInfor();
}
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
}
}

另一种更新的方法,调用cmd的ExecuteScalar()执行查询,记录数,返回0或1,返回是object类型

       <div>
<table>
<tr>
<td>ID:</td>
<td>
<asp:TextBox ID="txtUuid" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtUuserName2" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnU2" runat="server" Text="更新" OnClick="btnU2_Click"/>
</td>
</tr>
</table>
</div>
      protected void btnU2_Click(object sender, EventArgs e)
{
int Uid2 = txtUuid.Text.Trim() == "" ? : Convert.ToInt32(txtUuid.Text.Trim());
string uusername2 = txtUuserName2.Text.Trim();
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select count(*) from UserInfor where userid='{0}'", Uid2);
cmd = new SqlCommand(ssql, con);
int icount = Convert.ToInt32(cmd.ExecuteScalar().ToString());
if (icount> )
{
string ssql1 = string.Format("update UserInfor set UserName='{0}' where UserId='{1}'", uusername2, Uid2);
cmd = new SqlCommand(ssql1,con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('数据更新成功!');</script>");
}
BindUserInfor();
}
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
}

二、Get传值:传一些安全系数低,Id,传类型,比较小的数据

     <div>
<%=GetUserInfor()%>
</div>
 public partial class UserInforManagerContext : System.Web.UI.Page
{
/// <summary>
///通过这种方式把ID传了过去 ?<%#Eval("UserId") %>,接收get传值后的id
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param> private int _userId;//定义一个字段,只可以访问 public int UserId
{
//get,set是属性,既可以访问,又可以写
get
{
try
{
_userId = Request.QueryString["Id"] == "" ? : Convert.ToInt32(Request.QueryString["Id"].ToString());
}
catch (Exception)
{
_userId = ;
}
return _userId;
}
set { _userId = value; }
}
protected void Page_Load(object sender, EventArgs e)
{ } public string GetUserInfor()
{
StringBuilder sb = new StringBuilder();
sb.Append("<table>");
try
{
if (UserId > )
{
string constr = ConfigurationManager.ConnectionStrings["sq_r"].ToString();
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
string sString = string.Format("select * from UserInfor where UserId='{0}'", UserId);
SqlCommand cmd = new SqlCommand(sString, con);
using (SqlDataReader read = cmd.ExecuteReader())
{
if (read.HasRows)
{
if (read.Read())
{
sb.Append(string.Format("<tr><td>ID:</td><td>{0}</td></tr>", UserId));
sb.Append(string.Format("<tr><td>用户名:</td><td>{0}</td></tr>", read["userName"].ToString()));
sb.Append(string.Format("<tr><td>电话号码:</td><td>{0}</td></tr>", read["PhoneNum"].ToString()));
sb.Append(string.Format("<tr><td>QQ:</td><td>{0}</td></tr>", read["QQ"].ToString()));
sb.Append(string.Format("<tr><td>信息:</td><td>{0}</td></tr>", read["Message"].ToString()));
}
}
}
}
}
else
{
sb.Append("<tr><td>未找到相关数据!</td></tr>");
}
}
catch (Exception)
{
Response.Write("网站正在维护,请联系管理员!");
}
sb.Append("</table>");
return sb.ToString();
}
}

三、批量删除:

3.1全选:

 <div>
<table>
<tr>
<td>用户ID:</td>
<td>
<asp:TextBox ID="txtDUId" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnD" runat="server" Text="删除" OnClick="btnD_Click" />
</td>
</tr>
</table>
</div>
<div class="dItem">
<asp:Button ID="btnDelAll" runat="server" Text="批量删除" OnClick="btnDelAll_Click" OnClientClick="return confirm('你确定删除吗?');"/>
</div>
<div>
<asp:GridView ID="GriVShow" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" AutoPostBack="True" OnCheckedChanged="chkAll_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Userid" HeaderText="用户ID" />
<asp:BoundField DataField="UserName" HeaderText="用户名:" />
<asp:BoundField DataField="phonenum" HeaderText="电话号码" />
<asp:BoundField DataField="sex" HeaderText="性别" />
<asp:BoundField DataField="phase" HeaderText="班级" />
<asp:BoundField DataField="qq" HeaderText="QQ" />
<asp:BoundField DataField="Message" HeaderText="信息" />
<asp:BoundField DataField="HeadPic" HeaderText="头像" />
<asp:BoundField DataField="CreatedTime" HeaderText="创建时间" />
<asp:TemplateField HeaderText="详情">
<ItemTemplate>
<a href="UserInforManagerContext.aspx?Id=<%#Eval("UserId")%>">详情</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
     public partial class UserInforManager : System.Web.UI.Page
{
string constr = ConfigurationManager.ConnectionStrings["sq_r"].ToString();
SqlConnection con = null;
SqlCommand cmd = null;
SqlDataReader read = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack))
{
BindUserInfor();
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindUserInfor()
{
try
{
//string strstring = "select Userid,UserName,phonenum,sex,phase,qq,Message,HeadPic,CreatedTime from UserInfor where 1=1";
using (con = new SqlConnection(constr))
{
con.Open();
cmd = new SqlCommand(GetSql(), con);
using (read = cmd.ExecuteReader())
{
//开始读以上sql数据,这句话一定要有,如果把它取出来的话是需要读的,但是这地方我只想它把内容赋值给gridview
//if (read.Read())
//{
//}
//但是这地方我只想它把内容赋值给gridview
//内容取出来之后,我希望有东西可以接收它的内容
GriVShow.DataSource = read;
GriVShow.DataBind();
}
}
}
catch (Exception ex)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
} protected void btnSel_Click(object sender, EventArgs e)
{
BindUserInfor();
}
/// <summary>
/// 获取SQL
/// </summary>
/// <returns></returns>
public string GetSql()
{
//string username = txtSUserName.Text.Trim();
//string phase = ddlselPhase.SelectedValue;
StringBuilder sb = new StringBuilder();
sb.Append("select Userid,UserName,phonenum,sex,phase,qq,Message,HeadPic,CreatedTime from UserInfor where 1=1");
if (!string.IsNullOrEmpty(txtSUserName.Text.Trim()))
{
sb.Append(string.Format("and UserName='{0}'", txtSUserName.Text.Trim()));
}
if (ddlselPhase.SelectedIndex > )
{
sb.Append(string.Format("and phase='{0}'", ddlselPhase.SelectedValue));
}
return sb.ToString();
} protected void btnAdd_Click(object sender, EventArgs e)
{
try
{
string addUserName = txtAddUserName.Text.Trim();
string addPwd = txtAddPwd.Text.Trim();
string addqq = txtAddQq.Text.Trim();
string addPhase = ddlAddPhase.SelectedIndex > ? ddlAddPhase.SelectedValue : "";
if (!string.IsNullOrEmpty(addUserName))
{
using (con = new SqlConnection(constr))
{
con.Open();
string sstring1 = string.Format("insert into UserInfor(UserName,Pwd,QQ,Phase)values('{0}','{1}','{2}','{3}')", addUserName, addPwd, addqq, addPhase);
cmd = new SqlCommand(sstring1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('插入成功!');</script>");
}
BindUserInfor();
}
}
else
{
Response.Write("<script>alert('请输入内容');</script>");
}
}
catch (Exception)
{
Response.Write("网页正在维护!");
}
} public void Del(int UserId)
{
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select UserId from UserInfor where UserId='{0}'", UserId);
cmd = new SqlCommand(ssql, con);
read = cmd.ExecuteReader();
if (read.HasRows)
{
read.Dispose();
read.Close();
string sstring1 = string.Format("delete UserInfor where UserId='{0}'", UserId);
cmd = new SqlCommand(sstring1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('删除成功!');</script>");
} }
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception ex)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
}
protected void btnD_Click(object sender, EventArgs e)
{
int UserId = txtDUId.Text.Trim() == "" ? : Convert.ToInt32(txtDUId.Text.Trim());
Del(UserId);
BindUserInfor();
} /// <summary>
/// 更新的第一种方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnU_Click(object sender, EventArgs e)
{
int uId = txtUId.Text.Trim()==""?:Convert.ToInt32(txtUId.Text.Trim());
string uUserName = txtUUserName.Text.Trim();
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select UserId from UserInfor where UserId='{0}'", uId);
cmd = new SqlCommand(ssql, con);
read = cmd.ExecuteReader();
if (read.HasRows)
{
read.Dispose();
read.Close();
string ssql1 = string.Format("update UserInfor set UserName='{0}' where UserId='{1}'", uUserName, uId);
cmd = new SqlCommand(ssql1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("更新成功!");
}
BindUserInfor();
}
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
} /// <summary>
/// 更新的第二种方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnU2_Click(object sender, EventArgs e)
{
int Uid2 = txtUuid.Text.Trim() == "" ? : Convert.ToInt32(txtUuid.Text.Trim());
string uusername2 = txtUuserName2.Text.Trim();
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("select count(*) from UserInfor where userid='{0}'", Uid2);
cmd = new SqlCommand(ssql, con);
int icount = Convert.ToInt32(cmd.ExecuteScalar().ToString());
if (icount > )
{
string ssql1 = string.Format("update UserInfor set UserName='{0}' where UserId='{1}'", uusername2, Uid2);
cmd = new SqlCommand(ssql1, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('数据更新成功!');</script>");
}
BindUserInfor();
}
else
{
Response.Write("该用户不存在!");
}
}
}
catch (Exception)
{
Response.Write("<script>alret('系统正在维护,请联系管理员!');</script>");
}
} protected void chkAll_CheckedChanged(object sender, EventArgs e)
{
//1.当我们点击按钮时,去找chkAll它的事件源的对象把它变成checkBox
CheckBox chkAll = sender as CheckBox;
//2.对它的每一行进行遍历循环
foreach (GridViewRow gvr in GriVShow.Rows)
{
//2.1获得到第一行的第一列,找到每一列id等于chkitem的对象把它变成checkbox
CheckBox chkItem = gvr.Cells[].FindControl("chkItem") as CheckBox;
//2.2让它当前全选的checked属性等于下面每一行的属性,选中就为true,没选就为Fulse
chkItem.Checked = chkAll.Checked;
}
} protected void btnDelAll_Click(object sender, EventArgs e)
{
//1.对Gridview进行遍历循环
foreach (GridViewRow gvr in GriVShow.Rows)
{
//2.1获取到每行第二列的值
int UserId = Convert.ToInt32(gvr.Cells[].Text);
//2.2获取到每一行的第一列就是去找ID等于chkItem的对象把它变成checkbox
CheckBox chkItem=gvr.Cells[].FindControl("chkItem") as CheckBox;
if(chkItem.Checked)
{
Del(UserId);
}
}
BindUserInfor();
}
}

4.GridView-模板绑定下拉列表数据

[首先这地方一定要与数据库要绑定的字段对应],不然像楼主一样走了一个大坑

 <asp:TemplateField HeaderText="班级">
<ItemTemplate>
<asp:DropDownList ID="ddlgvPhase" runat="server" ToolTip='<%#Eval("phase")%>'>
<asp:ListItem>---请选择---</asp:ListItem>
<asp:ListItem>.NET高级班01期</asp:ListItem>
<asp:ListItem>.NET高级班02期</asp:ListItem>
<asp:ListItem>.NET讲师</asp:ListItem>
<asp:ListItem>.NET网站开发01期</asp:ListItem>
<asp:ListItem>.NET网站开发02期</asp:ListItem>
<asp:ListItem>.NET网站开发03期</asp:ListItem>
<asp:ListItem>.NET网站开发04期</asp:ListItem>
<asp:ListItem>.NET网站开发05期</asp:ListItem>
<asp:ListItem>.NET网站开发06期</asp:ListItem>
<asp:ListItem>.NET网站开发07期</asp:ListItem>
<asp:ListItem>.NET网站开发08期</asp:ListItem>
<asp:ListItem>.NET网站开发09期</asp:ListItem>
<asp:ListItem>.NET网站开发10期</asp:ListItem>
<asp:ListItem>.NET网站开发11期</asp:ListItem>
<asp:ListItem>.NET网站开发12期</asp:ListItem>
<asp:ListItem>.NET网站开发13期</asp:ListItem>
<asp:ListItem>.NET网站开发14期</asp:ListItem>
<asp:ListItem>ps设计01期</asp:ListItem>
<asp:ListItem>ps设计03期</asp:ListItem>
<asp:ListItem>网页前端01期</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

这时候,我们需要调用gridView的RowDataBound事件,当我们打开浏览器,gridView加载从第一行到第二行的逐行加载,加载的时候就执行这个方法,为什么要调用这个方法呢?表示对gridView进行一个遍历

如何找到这个事件呢?GridView的属性-事件里就有,找到双击就好

  protected void GriVShow_RowDataBound(object sender, GridViewRowEventArgs e)
{
//判断当前行是不是数据行
//获取到某行输入的数据把它变成UserInfor类型,对象才能调用它的属性方法
//e.Row.DataItem当前行的数据集
//找打当前行的班级
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlPhase = e.Row.FindControl("ddlgvPhase") as DropDownList;
string phase = ddlPhase.ToolTip;
if (!string.IsNullOrEmpty(phase))
{
//清空列表里所有的项
ddlPhase.ClearSelection();
ddlPhase.Items.FindByValue(phase).Selected = true;
}
}
}

5.批量更新:

userinfor这个常用的东西,我们直接封装成一个方法,直接调用该方法就好

 SqlConnection con = null;
SqlCommand cmd = null;
SqlDataReader read = null;
string constr = ConfigurationManager.ConnectionStrings["sq_r"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack))//页面第一次加载
{
BindUserInfor();
}
} public void BindUserInfor()
{
try
{
using (con = new SqlConnection(constr))
{
// where 1=1 order by UserId desc
con.Open();
string sSql = "select top 100 Userid,UserName,Pwd,phonenum,phase,qq,CreatedTime from UserInfor where 1=1 order by UserId desc";
cmd = new SqlCommand(sSql, con);
using (read = cmd.ExecuteReader())
{
GriVShow.DataSource = read;
GriVShow.DataBind();
}
}
}
catch (Exception)
{
Response.Write("网页正在维护!");
}
}

前台实例的代码都在这:

 <form id="form1" runat="server">
<div class="dItem">
<table>
<tr>
<td>
<asp:Button ID="btnDelAll" runat="server" Text="批量删除" OnClick="btnDelAll_Click" OnClientClick="return confirm('你确定删除吗?');"/>
</td>
<td>
<asp:Button ID="btnUpAll" runat="server" Text="批量修改" OnClick="btnUpAll_Click" />
</td>
<td>
<asp:Button ID="btnAddBottom" runat="server" Text="添加" OnClick="btnAddBottom_Click" />
</td>
</tr>
</table>
</div>
<div>
<asp:GridView ID="GriVShow" runat="server" AutoGenerateColumns="False" OnRowDataBound="GriVShow_RowDataBound">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" AutoPostBack="True" OnCheckedChanged="chkAll_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Userid" HeaderText="ID" />
<asp:BoundField DataField="UserName" HeaderText="用户名:" />
<asp:BoundField DataField="phonenum" HeaderText="电话号码" />
<asp:BoundField DataField="qq" HeaderText="QQ" />
<asp:BoundField DataField="phase" HeaderText="班级" />
<asp:BoundField DataField="CreatedTime" HeaderText="创建时间" />
<asp:TemplateField HeaderText="用户名">
<ItemTemplate>
<asp:TextBox ID="txtgvUserName" runat="server" Text='<%#Eval("UserName")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="密码">
<ItemTemplate>
<asp:TextBox ID="txtgvPwd" runat="server" Text='<%#Eval("Pwd")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="QQ">
<ItemTemplate>
<asp:TextBox ID="txtgvQq" runat="server" Text='<%#Eval("QQ")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="班级">
<ItemTemplate>
<asp:DropDownList ID="ddlgvPhase" runat="server" ToolTip='<%#Eval("phase")%>'>
<asp:ListItem>---请选择---</asp:ListItem>
<asp:ListItem>.NET高级班01期</asp:ListItem>
<asp:ListItem>.NET高级班02期</asp:ListItem>
<asp:ListItem>.NET讲师</asp:ListItem>
<asp:ListItem>.NET网站开发01期</asp:ListItem>
<asp:ListItem>.NET网站开发02期</asp:ListItem>
<asp:ListItem>.NET网站开发03期</asp:ListItem>
<asp:ListItem>.NET网站开发04期</asp:ListItem>
<asp:ListItem>.NET网站开发05期</asp:ListItem>
<asp:ListItem>.NET网站开发06期</asp:ListItem>
<asp:ListItem>.NET网站开发07期</asp:ListItem>
<asp:ListItem>.NET网站开发08期</asp:ListItem>
<asp:ListItem>.NET网站开发09期</asp:ListItem>
<asp:ListItem>.NET网站开发10期</asp:ListItem>
<asp:ListItem>.NET网站开发11期</asp:ListItem>
<asp:ListItem>.NET网站开发12期</asp:ListItem>
<asp:ListItem>.NET网站开发13期</asp:ListItem>
<asp:ListItem>.NET网站开发14期</asp:ListItem>
<asp:ListItem>ps设计01期</asp:ListItem>
<asp:ListItem>ps设计03期</asp:ListItem>
<asp:ListItem>网页前端01期</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="详情">
<ItemTemplate>
<a href="UserInforManagerContext.aspx?Id=<%#Eval("UserId")%>">详情</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>

封装了一个更新的方法,直接调用该方法即可

 public void UpUser(int userId,string username,string pwd,string qq,string phase)
{
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql= string.Format("update UserInfor set UserName='{0}',Pwd='{1}',QQ='{2}',Phase='{3}' where UserId='{4}'", username, pwd, qq, phase, userId);
cmd = new SqlCommand(ssql, con);
if (cmd.ExecuteNonQuery() > )
{
Response.Write("<script>alert('数据更新成功!');</script>");
}
}
}
catch (Exception)
{
Response.Write("网页正在维护!");
} }
/// <summary>
/// 批量更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpAll_Click(object sender, EventArgs e)
{
//遍历gridView
foreach (GridViewRow gvr in GriVShow.Rows)
{
int UserId = Convert.ToInt32(gvr.Cells[].Text);
CheckBox chkItem = gvr.Cells[].FindControl("chkItem") as CheckBox;
if (chkItem.Checked)
{
TextBox txtusername = gvr.Cells[].FindControl("txtgvUserName") as TextBox;
TextBox txtpwd = gvr.Cells[].FindControl("txtgvPwd") as TextBox;
TextBox txtqq = gvr.Cells[].FindControl("txtgvQq") as TextBox;
DropDownList ddlphase = gvr.Cells[].FindControl("ddlgvPhase") as DropDownList;
UpUser(UserId,txtusername.Text,txtpwd.Text,txtqq.Text,ddlphase.SelectedValue);
}
}
BindUserInfor();
}

5.添加的后台代码:双击添加按钮进入后台事件

 protected void btnAdd_Click(object sender, EventArgs e)
{
try
{
using (con = new SqlConnection(constr))
{
con.Open();
string ssql = string.Format("insert into UserInfor (Phase,CreatedTime) values('{0}','{1}')", "网页前端01期", DateTime.Now.ToString());
cmd = new SqlCommand(ssql, con);
cmd.ExecuteNonQuery();
}
BindUserInfor();
}
catch (Exception)
{
Response.Write("网页正在维护!");
}
}

Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]的更多相关文章

  1. SSI的实例(登录增删改查)

    源码下载:http://download.csdn.net/detail/u011518709/8195143 主要jar包: 配置文件:web.xml <?xml version=" ...

  2. ADO &period;NET 链接 增删改查

    ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存*程序调用 所有数据访问技术的基础 连 ...

  3. ADO&period;net简单增删改查

    嘿嘿,又到了总结了的时间,今天我们学习了ADO.net,什么是ADO.NET:ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, Sys ...

  4. MVC实现登录&comma;增删改查之数据展示&colon;JSP的EL表达式&lpar;二&rpar;

    这里的数据展示利用jsp的EL表达式,后台放入session,前台EL获取 数据库设计是这样的,一个老师对应有多个学生,在学生表student中建立外键tid与老师表teacher的tid对应,现在老 ...

  5. asp&period;net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL

    效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...

  6. WebForm增删改查

    最基本的,拼接字符串在Literal里面显示表,IsPostBack,增删改查基本,?传值 Request接收 LinQ to SQL类 在Default主页里面拖入Literal控件再加入一个按钮, ...

  7. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

  8. mysql 数据表的增删改查 目录

    mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表

  9. Ado&period;net&lbrack;增删改查,GET传值&rsqb;

    1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.c ...

随机推荐

  1. linker command failed with exit code 1 &lpar;use -v to see invocation&rpar;

    背景:用U盘从另一台电脑考过来后,出现错误 linker command failed with exit code 1 (use -v to see invocation) 出现这种情况很可能是,项 ...

  2. Innodb锁机制:Next-Key Lock 浅谈(转&rpar;

    http://www.cnblogs.com/zhoujinyi/p/3435982.html 数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性.InnoDB是一个支持行锁的存储引擎,锁的类 ...

  3. 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert

    [Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...

  4. RDD操作

    RDD操作 1.对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作 函数名 目的 示例 结果 map() 函数应用于RDD中的每个元素 rdd.map(x=>x+1) {2,3,4, ...

  5. linux系统下安全管理

    1.引导程序安全 linux系统的root密码是很容易破解的,当然前提是你没有设置引导程序密码,如GRUB或LILO,为了防止通过引导程序破译root密码,强烈建 议设置GRUB或LILO的引导密码, ...

  6. 状态机图statechart diagram

    [UML]UML系列——状态机图statechart diagram 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend ...

  7. Color&period;js 增强你对颜色的控制

    Color.js是一个能加强前端开发中对颜色处理的第三方库. 假设你已经基本了解色彩通道.色彩空间.色相.饱和度.亮度.不透明度等概念.当然了,毕竟前端算是半只脚踏进设计领域了,相信这些概念难不到你. ...

  8. 【前端单元测试入门02】react的单元测试之Enzyme

    React项目的单元测试 React的组件结构和JSX语法,对上一章的内容来讲进行测试显得很勉强. React官方已经提供了一个测试工具库:react-dom/test-utils 只是用起来不够方便 ...

  9. Java不走弯路教程(前言)

    本教程的程序基于Windows开发,所以你需要有一台安装Windows操作系统的电脑. 前言本教程将带你完成Java的初学和WEB框架的开发,学完本教程,你将完成对Java的入门并且对下一步不再迷茫. ...

  10. VueJs 源码分析 ---(二)实力化生命周期,以及解析模版和监听数据变化

    Vue 源码第二步 当前 Vue 的版本 V2.2.2 生命周期 相关介绍 我们可以从 setp1 中 去看到那张 vue 的生命周期图中看到,vue 的生命周期钩子. 具体的钩子时干什么的? 以及在 ...