public partial class admin_Modules_NewsInfoManages : ModuleBase
{
/********************************显示新闻*****************/
public Random rd;//用于随机产生数据
int pageSize = 10;//每页要显示的记录条数
private static int pageIndex = 0;//当前页从0开始
private static int newsId;//标识新闻ID
private static string newsTilte1;//标识新闻标题
private static int upn=0;//记录点击上传图片按钮的次数
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pageIndex = 0;
dlsNewsTypeBind();//绑定新闻类型下拉列表
dlsNewsType1Bind();//绑定新闻类型下拉列表 添加/修改中
ChkedOrChke.Text = "全选";
ShowNewsWithPage();//分页显示新闻列表
divModify.Visible = false;//块修改隐藏
divShowNewsAll.Visible = true;//块新闻列表显示
ViewState["UpFile"] = "";
}
}
/// <summary>
/// dlsNewsType控件绑定事件
/// </summary>
private void dlsNewsTypeBind()
{
//动态生成Datalist控件的数据,用于显示所有类型的新闻
//实例dataList ListItem
ListItem ListAll = new ListItem();
ListAll.Text = "***所有类型***";//控件的Text属性
ListAll.Value = "%";//控件的Value
ListAll.Selected = true;
dlsNewsType.Items.Add(ListAll);//ListAll加入下拉列表dlsNewsType
NewsSortAccess newsSortAccess = new NewsSortAccess();
//实例一个数据集,用于接收方法GetAllNewsSort()传回的值
DataSet ds = new DataSet();
ds = newsSortAccess.GetAllNewsSort();
//实例一个数据表,
DataTable infoCateTb = ds.Tables[0];
//在infoCateTb中取得每条记录,绑定到dlsNewsType中控件上
foreach (DataRow row in infoCateTb.Rows)
{
ListItem newlistItem = new ListItem();
newlistItem.Text = row["NewsSortName"].ToString();
newlistItem.Value = row["NSID"].ToString();
this.dlsNewsType.Items.Add(newlistItem);
}
}
/// <summary>
/// 实现分页显示
/// </summary>
private void ShowNewsWithPage()
{
NewsAccess newsAccess = new NewsAccess();
//定义数组参数pages
string[] pages = new string[2];
//如果dlsNewsType选择的是%,显示所有新闻列表,否则分类显示
if (dlsNewsType.SelectedValue == "%")
{
//为Datalist控件提供数据源
this.dlsNews.DataSource = newsAccess.GetAllNews(pageSize, pageIndex, ref pages);
}
else //按所属类别,显示新闻
{
int dlsValue = Int32.Parse(dlsNewsType.SelectedValue);
this.dlsNews.DataSource = newsAccess.GetAllNewsByNewsSorce(pageSize, pageIndex, dlsValue, ref pages);
}
//为datalist控件绑定主键为数据源的newID列
dlsNews.DataKeyField = "NewsID";
this.dlsNews.DataBind();
lbPageCount.Text = pages[1].ToString();
lblAllRecord.Text = pages[0].ToString();
this.lblCurPage.Text = Convert.ToString(pageIndex + 1);
if (Int32.Parse(lbPageCount.Text) <= Int32.Parse(lblCurPage.Text))
{
btnNext.Enabled = false;
btnPre.Enabled = true;
}
else if (Int32.Parse(lblCurPage.Text) < 2)
{
btnNext.Enabled = true;
btnPre.Enabled = false;
}
else
{
btnNext.Enabled = true;
btnPre.Enabled = true;
}
if (Convert .ToInt32(lblCurPage.Text) <= 1)
{
btnPre.Enabled = false;
}
}
//控件dlsNewsType改变后发生事件
protected void dlsNewsType_SelectedIndexChanged(object sender, EventArgs e)
{
//分类显示新闻
ShowNewsWithPage();
}
//首页
protected void btnFirst_Click(object sender, EventArgs e)
{
pageIndex = 0;
ShowNewsWithPage();
}
//上一页
protected void btnPre_Click(object sender, EventArgs e)
{
pageIndex = pageIndex - 1;
ShowNewsWithPage();
}
//下一页
protected void btnNext_Click(object sender, EventArgs e)
{
pageIndex = pageIndex + 1;
ShowNewsWithPage();
}
//尾页
protected void btnLast_Click(object sender, EventArgs e)
{
pageIndex = Int32.Parse(lbPageCount.Text) - 1;
ShowNewsWithPage();
}
//全选或反选
protected void ChkedOrChke_CheckedChanged(object sender, EventArgs e)
{
if (ChkedOrChke.Checked)//复选框ChkedOrChke被选中
{
ChkedOrChke.Text = "反选";//text属性
//在DataList控件中项中循环查找CheckNews控件,
foreach (DataListItem item in dlsNews.Items)
{
//找到控件转化为checkBox控件,并选中
CheckBox chkNews = (CheckBox)item.FindControl("CheckNews");
chkNews.Checked = true;
}
}
else //复选框ChkedOrChke不被选中
{
ChkedOrChke.Text = "全选";
//在DataList控件中项中循环查找CheckNews控件,
foreach (DataListItem item in dlsNews.Items)
{
//找到控件转化为checkBox控件,并选中
CheckBox chkNews = (CheckBox)item.FindControl("CheckNews");
chkNews.Checked = false;
}
}
}
//删除新闻
protected void btnDel_Click(object sender, EventArgs e)
{
int m = 0;//记录删除的条数
int n = 0;//记录要删除的条数
//在DataList控件中项中循环查找CheckNews控件,
foreach (DataListItem item in dlsNews.Items)
{
CheckBox checkNew = (CheckBox)item.FindControl("CheckNews");
if (checkNew.Checked)
{
n++;
NewsAccess newsAccess = new NewsAccess();
int newsId = Int32.Parse(dlsNews.DataKeys[item.ItemIndex].ToString());
bool flag = newsAccess.DelNewsByNewsID(newsId);
if (flag)
{
m++;
}
}
if (n == 0)
{
//没有选择行
messageBox(Page, "没有选择任何行");
}
}
if (m == n)
{
//全部删除成功
messageBox(Page, "全部删除成功!");
///
///删除新闻图片
NewsVO newsVo = new NewsVO();
newsVo = GetNewsBynewsID(newsId);
string delPathnewPic = Server.MapPath(".") + "//" + newsVo.NewsPicturePath;//同时删除此条新闻上的图片
if (File.Exists(delPathnewPic))
{
try
{
//若文件存在删除文件
File.Delete(delPathnewPic);
lblShow.Text = "删除成功";
}
catch (Exception ex)
{
lblShow.Text = ex.Message;
}
}
ShowNewsWithPage();
}
else if (m > 0 && n > m)
{
messageBox(Page, "删除成功" + m + "还有" + (n - m) + "条可能已经不存在或则数据库已经关闭");
}
else
{ ;}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
// dlsNewsType1Bind();
clareForAdd();
ViewState["SaveState"] = "添加";
divShowNewsAll.Visible = false;
divModify.Visible = true;
shangchuan.Visible = false;
}
/**********************************修改或添加新闻********************/
//修改新闻
protected void dlsNews_ItemCommand(object source, DataListCommandEventArgs e)
{
//1、在DlsNew控件中找到“修改”按键所在的行,
//2、在行中找到所绑定的列,也就是新闻ID
//3、根据ID查找到新闻信息,在分别显示页面中的各控件
ViewState["UpFile"] = "";
//dlsNewsType1Bind();
if (e.CommandName == "Modify")
{
//找到要修改的行的索引
int row = e.Item.ItemIndex;
//根据索引找到行绑定的主键
newsId = Int32.Parse(dlsNews.DataKeys[row].ToString());
NewsVO newsVo = new NewsVO();
newsVo = GetNewsBynewsID(newsId);
this.txtSub.Text = newsVo.NewsTitle.ToString();
newsTilte1 = newsVo.NewsTitle.ToString().Trim ();
this.txtSorce.Text = newsVo.Source.ToString();
this.dlsNewsType1.SelectedValue = newsVo.NSId.ToString();
//this.FileUpPic.ClientID = newsVo.NewsPicturePath;
this.txtUpFile.Text = newsVo.NewsPicturePath.ToString();
this.lblpath.Text = newsVo.NewsPicturePath.ToString();//用于保存修改前的图片地址,如果记录更新,用这个地址找到此图片,然后删除
this.FreeTextBox1.Text = newsVo.NewsContent;
}
ViewState["SaveState"] = "修改";
divShowNewsAll.Visible = false;
divModify.Visible = true;
shangchuan.Visible = false;
}
/// <summary>
/// 绑定下拉列表dlsNewsType1
/// </summary>
private void dlsNewsType1Bind()
{
//绑定DLSNEWSTyp1控件.用于点击修改时,DlsNewsType1控件被选中对应的值
NewsSortAccess newsSortAccess = new NewsSortAccess();
DataSet ds = new DataSet();
ds = newsSortAccess.GetAllNewsSort();
DataTable infoCateTb = ds.Tables[0];
dlsNewsType1.Controls.Clear();
foreach (DataRow row in infoCateTb.Rows)
{
ListItem newlistItem = new ListItem();
newlistItem.Text = row["NewsSortName"].ToString();
newlistItem.Value = row["NSID"].ToString();
this.dlsNewsType1.Items.Add(newlistItem);
}
}
/// <summary>
/// //根据新闻ID查找新闻信息
/// </summary>
/// <param name="newsID"></param>
/// <returns></returns>
public NewsVO GetNewsBynewsID(int newsID)
{
NewsAccess newsAccess = new NewsAccess();
return newsAccess.GetNewsByNewsID(newsID);
}
/// <summary>
/// 清空各控件,用于点添加新闻事件时
/// </summary>
public void clareForAdd()
{
this.FreeTextBox1.Text = null;
this.txtSorce.Text = null;
this.txtSub.Text = null;
}
修改方法
public void modify()
{
bool flag = false;
try
{
NewsVO newsVo = new NewsVO();
string nesTi = this.txtSub.Text.ToString();
if (nesTi.Trim() == newsTilte1)
{
nesTi = this.txtSub.Text.ToString();
}
else
{
if (FindNewsTilte(nesTi))
{
messageBox(Page, "此标题已经存在,");
}
else
{
newsVo.NewsTitle = nesTi;
}
}
//newsVo.NewsTitle = this.txtSub.Text.ToString();
newsVo.Source = this.txtSorce.Text.ToString();
newsVo.NewsContent = this.FreeTextBox1.Text;
newsVo.NewsPicturePath = this.txtUpFile.Text.ToString();
newsVo.PublishTime = DateTime.Now;
newsVo.NSId =Int32 .Parse ( dlsNewsType1.SelectedValue );
NewsAccess newsAccess = new NewsAccess();
flag = newsAccess.UpdateNews(newsVo, newsId);
if (flag == true)//查入成功
{
messageBox(Page, "修改成功!");
}
else //添加不成功,要删除刚上传上的图片
{
deltPic();
}
//如果修改时上传了新图片
if (ViewState["UpFile"].ToString() == "已经上传")
{
//标识上传到服务器上的文件的路径
string delFile = Server.MapPath(".") + "//"+lblpath.Text;
//文件是否存在
if (File.Exists(delFile))
{
try
{
//若文件存在删除文件
File.Delete(delFile);
lblShow.Text = "删除成功";
}
catch (Exception ex)
{
lblShow.Text = ex.Message;
}
}
}
}
catch (Exception ex)
{
messageBox(Page, ex.Message);
}
}
///添加新闻方法
public void AddNews()
{
bool flag = false;
try
{
NewsVO newsVo = new NewsVO();
string nesTi=this.txtSub.Text.ToString();
if (FindNewsTilte(nesTi))
{
messageBox(Page, "此标题已经存在,");
}
else
{
newsVo.NewsTitle = nesTi;
}
newsVo.Source = this.txtSorce.Text.ToString();
newsVo.NewsContent = this.FreeTextBox1.Text;
newsVo.NewsPicturePath = this.txtUpFile.Text.ToString();
newsVo.PublishTime = DateTime.Now;
newsVo.NSId = Int32.Parse (dlsNewsType1.SelectedValue);
NewsAccess newsAccess = new NewsAccess();
flag = newsAccess.AddNews(newsVo);
if (flag == true)//查入成功
{
messageBox(Page, "添加成功!");
}
else //添加不成功,要删除刚上传上的图片
{
deltPic();
}
}
catch (Exception ex)
{
messageBox(Page, ex.Message);
}
}
//根据新闻标题查找新闻
public bool FindNewsTilte(string newsTitle)
{
bool flag = false;
NewsAccess newsAccess=new NewsAccess ();
DataSet ds = new DataSet();
ds = newsAccess.GetNewsIDByNewsTitle(newsTitle);
{
int rows = ds.Tables[0].Rows.Count;
if (rows>0)
{
flag = true;
}
}
return flag;
}
/// <summary>
/// //保存控件单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
//如是修改,先读出原图片的地址放到txtUpFile.text,如果修改图片,用图片地址为上传页面所传过来的地址参数修改txtUpFile.text
if (ViewState["SaveState"].ToString() == "修改")
{
modify();
}
else
{
AddNews();
}
divShowNewsAll.Visible = true;
divModify.Visible = false;
upn = 0;
ShowNewsWithPage();
}
/// <summary>
/// 取消按键单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCance_Click(object sender, EventArgs e)
{
//如果已经上传图片,根据上传页面所传过来的地址参数删除图片文件
if (ViewState["UpFile"].ToString() == "已经上传")
{
deltPic();
}
//如果没有上传就显示DivShowNews
divModify.Visible = false;
divShowNewsAll.Visible = true;
upn = 0;
}
/// <summary>
/// //用于删除所上传上的图片
/// </summary>
public void deltPic()
{
//标识上传到服务器上的文件的路径
string delFile = Server.MapPath(".") +"//"+ txtUpFile.Text;
//文件是否存在
if (File.Exists(delFile))
{
try
{
//若文件存在删除文件
File.Delete(delFile);
lblShow.Text = "删除成功";
}
catch (Exception ex)
{
lblShow.Text = ex.Message;
}
}
}
/*****************************上传图片*************************************/
//上传图片事件
protected void btnUpFile_Click(object sender, EventArgs e)
{
//显示浏览控件
this.shangchuan.Visible = true;
//隐藏上传图片按钮行
this.trUPfile.Visible = false;
}
/// <summary>
///上传图片的具体操作
/// 如果是第一次点击此控件,进行上传.如再次点击此控件,要再次上传的图片,如果再次上传成功,
/// 就删除上一次所上传的图片,如果不成功点击保存,被系统保存的图片为上次上传的图片!
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpFilePic_Click(object sender, EventArgs e)
{
upn++;
string name = FileUpload1.PostedFile.FileName; // 获取将上传文件的名称
string size = FileUpload1.PostedFile.ContentLength.ToString();//获取将上传文件的大小
string type = FileUpload1.PostedFile.ContentType; //获取将上传文件的MIME内容类型
string type2 = name.Substring(name.LastIndexOf(".") + 1); //获取文件后缀名
//string wpath = "photo//" + name; ;//写入到数据库里的虚拟路径
rd = new Random(1);
string filename = DateTime.Now.Date.ToString("yyyymmdd") + DateTime.Now.ToLongTimeString().Replace(":", "") + rd.Next(9999).ToString();
if (name == "")
{
messageBox(Page, "请选择图片!");
}
else
{
if (type == "image/pjpeg" || type == "image/gif") //判断文件的类型及格式
{
if (Convert.ToInt32(size) > 35360)
{
messageBox(Page, "你的图片过大,不能上传!");
}
else
{
try
{
FileUpload1.SaveAs(Server.MapPath(".") + "//images//newsImagesFace//" + filename + "." + type2);//将文件保存到path路径里
}
catch (Exception ex)//如果上传不成功发出异常并跳出此次事件
{
messageBox(Page, "上传不成功"+ex);
return;
}
messageBox(Page, "上传成功");
ViewState["UpFile"] = "已经上传";
if (upn >= 2)//如果第二次点击btnUpFilePic
{
try
{
string fileDelMores = Server.MapPath(".") + "//" + txtUpFile.Text;//第一次上传图片的地址
if (File.Exists(fileDelMores))
{
File.Delete(fileDelMores);
}
}
catch (Exception ex)
{
messageBox(Page, ex.Message);
}
}
this.txtUpFile.Text = "images//newsImagesFace//" + filename + "." + type2;
string upPath = "images//newsImagesFace//" + filename + "." + type2;
this.shangchuan.Visible = false;
this.trUPfile.Visible = true;
}
}
else
{
messageBox(Page, "图片为非法格式,不能上传!");
}
}
}
}