一、思路
第一步:点击修改按钮跳出修改窗口,并为窗口赋值
第二步:修改之后后,点击提交修改,跳转到主页面
二、代码实现
1.实现修改窗口呈现。
(1)为DAL数据交互层添加GetMainInfoByRowDal()方法,根据id条件查询数据。
/// <summary>
/// 条件查询数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public MainInfo GetMainInfoByRowDal(int id)
{
MainInfo mainInfo = new MainInfo();
string sqlStr = @"Select
*
from
[dbo].[HKSJ_Main]
where
ID=@id";
using (SqlDataReader sdr = SqlHelper.ExecuteReader(sqlStr, CommandType.Text, new SqlParameter("@id", SqlDbType.Int) { Value = id }))
{
if (sdr.HasRows)
{
if (sdr.Read())
{
mainInfo.ID = sdr.GetInt32(0);
mainInfo.Title = sdr.GetString(1);
mainInfo.Content = sdr.GetString(2);
mainInfo.Type = sdr.GetString(3);
mainInfo.Date = sdr.GetDateTime(4);
mainInfo.People = sdr.GetString(5);
mainInfo.PicUrl = sdr.IsDBNull(6) ? null : sdr.GetString(6);
}
}
}
return mainInfo;
}
(2) 为BLL业务逻辑处理层添加GetMainInfoByRowBll()方法,进行业务逻辑处理
/// <summary>
/// 条件查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public MainInfo GetMainInfoByRowBll(int id)
{
return mainInfoDAL.GetMainInfoByRowDal(id);
}
(3)UI展示层,为网站添加EditNews.ashx一般处理程序,用于数据展示
<%@ WebHandler Language="C#" Class="EditNews" %>
using System;
using System.Web;
using System.IO;
public class EditNews : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
int id = int.Parse(context.Request["id"]);
BLL.MainInfoBLL mainInfo = new BLL.MainInfoBLL();
Modle.MainInfo mainInfo1 = mainInfo.GetMainInfoByRowBll(id);
string stringTemp = File.ReadAllText(context.Request.MapPath("EditNewsTemp.html"));
stringTemp = stringTemp.Replace("@ID", mainInfo1.ID.ToString()).Replace("@Title", mainInfo1.Title).Replace("@People", mainInfo1.People);
context.Response.Write(stringTemp);
}
public bool IsReusable
{
get
{
return false;
}
}
}
模型:EditNewsTemp.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form action="/ProcessEditNews.ashx" method="post">
<table>
<tr>
<td>
序号:
</td>
<td>
@ID
<input type="hidden" name="hidId" value="@ID" />
</td>
</tr>
<tr>
<td>
标题:
</td>
<td>
<input type="text" name="title" value="@Title" />
</td>
</tr>
<tr>
<td>
新闻发布人:
</td>
<td>
<input type="text" name="people" value="@People" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="修改" />
</td>
</tr>
</table>
</form>
</body>
</html>
2.实现数据提交呈现
(1)为DAL数据交互层添加UpdateMainInfoByRowDal()方法,根据mainInfo参数数据修改数据库数据。
/// <summary>
/// 修改
/// </summary>
/// <param name="mainInfo"></param>
/// <returns></returns>
public int UpdateMainInfoByRowDal(MainInfo mainInfo)
{
string sqlStr = @"update [dbo].[HKSJ_Main] set title=@Title,people=@People where ID=@id";
SqlParameter[] pars =
{
new SqlParameter("@id",SqlDbType.Int){Value=mainInfo.ID},
new SqlParameter("@Title",SqlDbType.NVarChar,200){Value=mainInfo.Title},
new SqlParameter("@People",SqlDbType.NVarChar,20){Value=mainInfo.People}
};
return SqlHelper.ExectuNoQurey(sqlStr, CommandType.Text, pars);
}
(2)为BLL业务逻辑处理层添加UpdateMainInfoByRowBll()方法,进行业务逻辑处理
public int UpdateMainInfoByRowBll(MainInfo mainInfo)
{
return mainInfoDAL.UpdateMainInfoByRowDal(mainInfo);
}
(3)UI展示层,为网站添加ProcessEditNews一般处理程序,用于数据展示
<%@ WebHandler Language="C#" Class="ProcessEditNews" %>
using System;
using System.Web;
public class ProcessEditNews : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
int id = int.Parse(context.Request["hidId"] ?? "0");
BLL.MainInfoBLL mainInfo = new BLL.MainInfoBLL();
var mi = mainInfo.GetMainInfoByRowBll(id);
mi.Title = context.Request["title"];
mi.People = context.Request["people"];
mainInfo.UpdateMainInfoByRowBll(mi);
context.Response.Redirect("MainList.ashx");
}
public bool IsReusable
{
get
{
return false;
}
}
}