📄 eight.html
字号:
strConn = ConfigurationManager.AppSettings["strConn"];<br>
}<br>
conn = new SqlConnection(strConn);<br>
cmd = new SqlCommand();<br>
cmd.Connection = conn;<br>
}</p>
<p>4.在GoodsSaveInfo.aspx.cs中写一个GetGoodsSaveInfo()的方法来提取库存配置资料。通过判定其DefaultView.Count是否大于0来确定是否有库存配置资料的数据,如果提取成功,就把相应的数据(商品满库数量,库存预警数量,配置修改时间)都赋值到页面上的对应字段TextBox控件上,对于不许修改的字段定义为只读(如配置修改时间),否则就设置初始值0和当前时间。</p>
<p class="code">/// <summary><br>
/// 提取库存配置信息<br>
/// </summary><br>
private void GetGoodsSaveInfo()<br>
{<br>
DataTable myDtb = new DataTable();<br>
myDtb = GoodsSave.GetGoodsSaveInfo().Tables[0];<br>
if (myDtb.DefaultView.Count > 0)<br>
{<br>
AllNum.Text = myDtb.DefaultView[0]["AllNum"].ToString();<br>
AlertNum.Text = myDtb.DefaultView[0]["AlertNum"].ToString();<br>
AddTime.Text = myDtb.DefaultView[0]["AddTime"].ToString();<br>
Session["GoodsSaveInfoID"] = myDtb.DefaultView[0]["GoodsSaveInfoID"].ToString();<br>
}<br>
else<br>
{<br>
AllNum.Text = "0";<br>
AlertNum.Text = "0";<br>
AddTime.Text = DateTime.Now.ToString();<br>
Session["GoodsSaveInfoID"] = "0";<br>
}<br>
}</p>
<p>在库存类文件GoodsSave.cs上创建获取库存配置资料的方法GetGoodsSaveInfo(),该方法没有输入参数,完成库存配置资料的数据库提取功能,返回信息为DataSet。</p>
<p class="code">/// <summary><br>
/// 提取库存配置信息<br>
/// </summary><br>
/// <returns>库存配置信息DataSet</returns><br>
public DataSet GetGoodsSaveInfo()<br>
{<br>
cmd.CommandText = string.Format("select * from GoodsSaveInfo order by GoodsSaveInfoID desc");<br>
SqlDataAdapter dad = new SqlDataAdapter(cmd);<br>
DataSet dts = new DataSet();<br>
try<br>
{<br>
conn.Open();<br>
dad.Fill(dts);<br>
}<br>
catch (Exception ex)<br>
{<br>
throw (ex);<br>
}<br>
finally<br>
{<br>
cmd.Dispose();<br>
conn.Close();<br>
}<br>
return dts;<br>
}</p>
<p>5.在资料修改提交的Click事件IsModify_Click()中加入所有修改字段的校验程序,通过校验就要覆盖数据库中的数据,在库存类文件GoodsSave.cs上创建修改库存配置资料的方法ModifyGoodsSaveInfo(),把三个信息修改字段作为参数输入给方法,完成库存配置资料的数据库覆盖功能,然后在GoodsSaveInfo.aspx.cs引用申明后调用。</p>
<p class="code">/// <summary><br>
/// 修改库存配置信息<br>
/// </summary><br>
protected void IsModify_Click(object sender, EventArgs e)<br>
{<br>
if ((AllNum.Text.Trim().Length == 0) || (AlertNum.Text.Trim().Length == 0))<br>
{<br>
JScript.Alert("商品满库数量和库存预警数量不能为空!");<br>
return;<br>
}<br>
else<br>
{<br>
int goodsSaveInfoID = 0;<br>
if ((Session["GoodsSaveInfoID"] != null) && (Session["GoodsSaveInfoID"].ToString() != ""))<br>
{<br>
goodsSaveInfoID = int.Parse(Session["GoodsSaveInfoID"].ToString());<br>
}<br>
int allNum = 0;<br>
if (StringUtil.IsNumeric(AllNum.Text.Trim()))<br>
{<br>
allNum = int.Parse(AllNum.Text.Trim().ToString());<br>
}<br>
int alertNum = 0;<br>
if (StringUtil.IsNumeric(AlertNum.Text.Trim()))<br>
{<br>
alertNum = int.Parse(AlertNum.Text.Trim().ToString());<br>
}<br>
int modifyOk = GoodsSave.ModifyGoodsSaveInfo(goodsSaveInfoID, allNum, alertNum);<br>
if (modifyOk == 1)<br>
{<br>
JScript.Alert("修改成功,欢迎使用!");<br>
JScript.JavaScriptLocationHref("Main.aspx");<br>
}<br>
else<br>
{<br>
JScript.Alert("修改失败,请稍后再来!");<br>
return;<br>
}<br>
}<br>
}</p>
<p>库存类文件GoodsSave.cs上创建修改库存配置资料的方法ModifyGoodsSaveInfo()。</p>
<p class="code">/// <summary><br>
/// 修改库存配置信息<br>
/// </summary><br>
/// <param name="goodsSaveInfoID">库存配置ID</param><br>
/// <param name="allNum">商品满库数量</param><br>
/// <param name="alertNum">库存预警数量</param><br>
/// <returns>flag标记</returns><br>
public int ModifyGoodsSaveInfo(int goodsSaveInfoID, int allNum, int alertNum)<br>
{<br>
int flag = 0;<br>
if (goodsSaveInfoID > 0)<br>
{<br>
cmd.CommandText = string.Format("update GoodsSaveInfo set AllNum = {0},AlertNum = {1},AddTime = getdate() where GoodsSaveInfoID = {2}", allNum, alertNum, goodsSaveInfoID);<br>
}<br>
else<br>
{<br>
cmd.CommandText = string.Format("insert into GoodsSaveInfo (AllNum,AlertNum) values ({0},{1})", allNum, alertNum);<br>
}<br>
try<br>
{<br>
conn.Open();<br>
cmd.ExecuteNonQuery();<br>
flag = 1;<br>
}<br>
catch (Exception ex)<br>
{<br>
throw (ex);<br>
}<br>
finally<br>
{<br>
cmd.Dispose();<br>
conn.Close();<br>
}<br>
return flag;<br>
}</p>
<p><a href="#00"><<返回目录</a></p>
<p class="title02"><a id="03" name="03"></a>编写库存预警商品页面GoodsSaveAlert.aspx程序</p>
<p>1.创建库存预警商品页面GoodsSaveAlert.aspx,在页面上插入2个Panel控件,一个是库存预警商品列表显示(PalAllGoodsSaveAlert),一个是库存预警商品数量修改(PalOneGoodsSaveAlert),先显示PalAllGoodsSaveAlert,隐藏PalOneGoodsSaveAlert。</p>
<p><img src="images/8-2-1.JPG" width="641" height="340"><br>
<img src="images/8-2-2.JPG" width="641" height="169"></p>
<p>2.在PalAllGoodsSaveAlert的Panel控件中最上面加入页面的标题并插入一个服务器端按钮控件Button用来把实现把所有预警商品全部满库,再插入一个SqlDataSource数据源控件和一个GridView数据绑定控件,用来显示库存预警商品列表。</p>
<p>配置数据源控件,选择之前的连接字符串,手动输入如下查询语句。</p>
<p class="code">SELECT d.SaveNum, d.SaveAddNum, d.SaveTime, d.SaveAddTime, c.GoodsID, c.GoodsName, a.TypeName, b.BorderName FROM GoodsType AS a INNER JOIN GoodsInfo AS c ON a.TypeID = c.TypeID INNER JOIN GoodsBorder AS b ON c.BorderID = b.BorderID INNER JOIN GoodsSave AS d ON c.GoodsID = d.GoodsID INNER JOIN GoodsSaveInfo AS e ON d.SaveNum < e.AlertNum ORDER BY d.SaveNum, a.TypeID DESC, b.BorderID DESC, c.GoodsOrder DESC</p>
<p class="note">相关知识点:<br>
上面的查询语句是.NET 2.0在运行查询生成器时生成的代码,这里也可以输入我们习惯的SQL语句的写法,例如输入下面的代码所完成的查询功能和上面的是一样的。<br>
select d.SaveNum,d.SaveAddNum,d.SaveTime,d.SaveAddTime,c.GoodsID,c.GoodsName,a.TypeName,b.BorderName from GoodsType a,GoodsBorder b,GoodsInfo c ,GoodsSave d,GoodsSaveInfo e where a.TypeID = c.TypeID and b.BorderID = c.BorderID and c.GoodsID = d.GoodsID and d.SaveNum < e.AlertNum order by d.SaveNum,a.TypeID desc,b.BorderID desc,c.GoodsOrder desc<br>
注意多表联合查询时SQL语句的写法。</p>
<p>为GridView控件选择以上数据源,启用分页和排序,编辑控件的属性以达到上图所示效果。编辑列,将当前库存数量字段的内容显示为红色(ItemStyle->ForeColor->Red),将最近增加数量字段的内容显示为蓝色(ItemStyle->ForeColor->Blue);设置两个时间字段的格式(DataFormatString)为{0:yyyy-MM-dd},并将HtmlEncode设置为false使该字段的内容以我们需要的格式显示;最后添加一个HyperLinkField字段,HeadText设为操作,Text设为编辑,DataNavigateUrlFields设为GoodsID,DataNavigateUrlFormatString设为GoodsSaveAlert.aspx?GoodsID={0}。</p>
<p>在PalOneGoodsSaveAlert的Panel控件中逐步添加库存预警商品所有字段的TextBox控件,控件ID分别为GoodsID、GoodsName、SaveNum、SaveAddNum、SaveTime、SaveAddTime,将GoodsID控件设为不可见用来存放商品的GoodsID,再将除SaveNum以外的四个控件设为只读,不允许修改。再创建1个服务器端按钮控件Button完成库存预警商品的数量修改功能,1个客户端Reset清空按钮。</p>
<p>页面的HTML代码如下</p>
<p class="code"><%@ Page Language="C#" AutoEventWireup="true" CodeFile="GoodsSaveAlert.aspx.cs" Inherits="Manage_GoodsSaveAlert" %><br>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br>
<html xmlns="http://www.w3.org/1999/xhtml"><br>
<head runat="server"><br>
<title><br>
<%=typename%><br>
--后台管理</title><br>
<link href="../App_Themes/Theme1/StyleSheetManage2.css" rel="stylesheet" type="text/css" /><br>
</head><br>
<body><br>
<form id="form1" runat="server"><br>
<asp:Panel ID="PalAllGoodsSaveAlert" runat="server"><br>
<table class="bor_1" id="Table1" cellspacing="0" cellpadding="0" width="800" align="center"<br>
border="0"><br>
<tr><br>
<td class="bgTitler" align="center" width="600" height="30"><br>
<b>库存预警商品列表</b></td><br>
<td class="bgTitler" align="center" width="200"><br>
<asp:Button ID="AddAll" runat="server" Text="预警商品全部满库" CssClass="btn1" OnClick="AddAll_Click"><br>
</asp:Button></td><br>
</tr><br>
</table><br>
<br><br>
<table id="Table2" bordercolor="#003399" cellspacing="0" cellpadding="0" width="800"<br>
align="center" border="0"><br>
<tr><br>
<td valign="top" align="center" width="100%"><br>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WShopConnectionString %>"<br>
SelectCommand="SELECT d.SaveNum, d.SaveAddNum, d.SaveTime, d.SaveAddTime, c.GoodsID, c.GoodsName, a.TypeName, b.BorderName FROM GoodsType AS a INNER JOIN GoodsInfo AS c ON a.TypeID = c.TypeID INNER JOIN GoodsBorder AS b ON c.BorderID = b.BorderID INNER JOIN GoodsSave AS d ON c.GoodsID = d.GoodsID INNER JOIN GoodsSaveInfo AS e ON d.SaveNum < e.AlertNum ORDER BY d.SaveNum, a.TypeID DESC, b.BorderID DESC, c.GoodsOrder DESC"><br>
</asp:SqlDataSource><br>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"<br>
AutoGenerateColumns="False" CellPadding="4" DataKeyNames="GoodsID" DataSourceID="SqlDataSource1"<br>
ForeColor="#333333" Width="100%"><br>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><br>
<Columns><br>
<asp:BoundField DataField="TypeName" HeaderText="所属一级分类" SortExpression="TypeName"><br>
<ItemStyle Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="BorderName" HeaderText="所属二级分类" SortExpression="BorderName"><br>
<ItemStyle Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="GoodsName" HeaderText="商品名称" SortExpression="GoodsName"><br>
<ItemStyle Width="176px" Wrap="True" HorizontalAlign="Left" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="SaveNum" HeaderText="当前库存数量" SortExpression="SaveNum"><br>
<ItemStyle ForeColor="Red" Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="SaveTime" HeaderText="最初入库时间" SortExpression="SaveTime"<br>
DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False"><br>
<ItemStyle Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="SaveAddNum" HeaderText="最近增加数量" SortExpression="SaveAddNum"><br>
<ItemStyle ForeColor="Blue" Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="SaveAddTime" HeaderText="最近增加时间" SortExpression="SaveAddTime"<br>
DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False"><br>
<ItemStyle Width="12%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:BoundField><br>
<asp:BoundField DataField="GoodsID" HeaderText="GoodsID" InsertVisible="False" ReadOnly="True"<br>
SortExpression="GoodsID" Visible="False" /><br>
<asp:HyperLinkField HeaderText="操作" Text="编辑" DataNavigateUrlFields="GoodsID" DataNavigateUrlFormatString="GoodsSaveAlert.aspx?GoodsID={0}"><br>
<ItemStyle Width="6%" /><br>
<HeaderStyle Wrap="True" /><br>
</asp:HyperLinkField><br>
</Columns><br>
<RowStyle BackColor="#EFF3FB" /><br>
<EditRowStyle BackColor="#2461BF" /><br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -