BoundFieldDataField="ChanceRate"HeaderText="成功机率"
SortExpression="ChanceRate"/>
TemplateFieldHeaderText="操作">
ImageButtonID="imgBtnEdit"runat="server"
CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/edit.gif"
oncommand="imgBtnEdit_Command"ToolTip="编辑销售机会"/>
ImageButtonID="imgBtnSignTo"runat="server"
CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/group.png"
oncommand="imgBtnSignTo_Command"ToolTip="指派销售机会给员工"/>
ImageButtonID="imgBtnDelete"runat="server"
CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/delete.gif"
onclientclick="JavaScript:
returnconfirm('确定要删除吗?
')"
oncommand="imgBtnDelete_Command"ToolTip="删除销售机会"/>
TemplateField>
GridView>
为了便于浏览销售机会信息,页面还添加了一个分页控件“AspNetPager.dll”,将该控件文件拷贝至“CRM\bin”目录下面,然后在“CRM”项目中添加对该控件的引用,如图5-8所示。
图5-8添加分页控件AspNetPager
要在该页面使用这个分页控件,必须在“SaleChanceManager.aspx”页面代码最上面添加如下预处理指令:
<%@RegisterAssembly="AspNetPager"Namespace="Wuqi.Webdiyer"TagPrefix="webdiyer"%>
然后在“GridView”控件的源代码下面添加如下代码:
AspNetPagerID="pager"runat="server"CssClass="zi"
FirstPageText="首页"LastPageText="尾页"NextPageText="下一页"
OnPageChanged="pager_PageChanged"PageIndexBoxType="DropDownList"
PrevPageText="上一页"ShowCustomInfoSection="Left"ShowPageIndexBox="Always">
AspNetPager>
添加完毕后切换到设计界面就可以看到该分页控件。
完整的页面代码如下:
<%@PageTitle="销售机会管理"Language="C#"MasterPageFile="~/Site.Master"AutoEventWireup="true"CodeBehind="SaleChanceManager.aspx.cs"Inherits="CRM.SaleManage.SaleChanceManager"%>
<%@RegisterAssembly="AspNetPager"Namespace="Wuqi.Webdiyer"TagPrefix="webdiyer"%>
ContentID="Content1"ContentPlaceHolderID="HeadContent"runat="server">
Content>
ContentID="Content2"ContentPlaceHolderID="MainContent"runat="server">
HyperLinkID="HyperLink1"runat="server"NavigateUrl="~/SaleManage/CreateChance.aspx">新建销售机会
HyperLink>
LinkButtonID="lnkQuery"runat="server"OnClick="lnkQuery_Click">查询
LinkButton>
|
|
LabelID="Label1"runat="server"Text="客户名称: ">
Label> TextBoxID="txtClientName"runat="server"CssClass="shortTextEntry">
TextBox> | LabelID="Label2"runat="server"Text="概要: ">
Label> TextBoxID="txtTitle"runat="server"CssClass="shortTextEntry">
TextBox> | LabelID="Label3"runat="server"Text="联系人: ">
Label> TextBoxID="txtLinkMan"runat="server"CssClass="shortTextEntry">
TextBox> | |
LabelID="lblQueryEmpty"runat="server"Text="没有销售机会"Visible="False">
Label> GridViewID="grdSaleChances"runat="server"AutoGenerateColumns="False" CssClass="zi" onrowdatabound="grdSaleChances_RowDataBound"PageSize="8">
BoundFieldDataField="ChanceId"HeaderText="编号"Visible="False"/> BoundFieldDataField="ChanceCustomerName"HeaderText="客户名称"/> BoundFieldDataField="ChanceTitle"HeaderText="概要"/> BoundFieldDataField="ChanceLinkMan"HeaderText="联系人"/> BoundFieldDataField="ChanceTelephone"HeaderText="联系人电话"/> BoundFieldDataField="ChanceCreateDate"HeaderText="创建时间" DataFormatString="{0: yyyy-MM-dd}"SortExpression="ChanceCreateDate"/> BoundFieldDataField="ChanceRate"HeaderText="成功机率" SortExpression="ChanceRate"/> TemplateFieldHeaderText="操作">
ImageButtonID="imgBtnEdit"runat="server" CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/edit.gif" oncommand="imgBtnEdit_Command"ToolTip="编辑销售机会"/> ImageButtonID="imgBtnSignTo"runat="server" CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/group.png" oncommand="imgBtnSignTo_Command"ToolTip="指派销售机会给员工"/> ImageButtonID="imgBtnDelete"runat="server" CommandArgument='<%#Eval("ChanceId")%>'ImageUrl="~/Images/delete.gif" onclientclick="JavaScript: returnconfirm('确定要删除吗? ')" oncommand="imgBtnDelete_Command"ToolTip="删除销售机会"/>
TemplateField>
GridView> AspNetPagerID="pager"runat="server"CssClass="zi" FirstPageText="首页"LastPageText="尾页"NextPageText="下一页" OnPageChanged="pager_PageChanged"PageIndexBoxType="DropDownList" PrevPageText="上一页"ShowCustomInfoSection="Left"ShowPageIndexBox="Always">
AspNetPager>
|
Content>
二、功能编码
1.数据访问层DAL功能设计
打开“解决方案资源管理器”,在程序集目录“DAL”下打开类文件“SaleChanceRepository.cs”,添加一个方法GetPaged()用于从数据库表“SaleChance”获取分页显示的销售机会记录。
该方法实现代码如下:
publicDataTableGetPaged(intpageIndex,intpageSize,stringorderBy,stringwhereClause,outinttotalRowCount)
{
SqlDataAdapterda=newSqlDataAdapter();
SqlCommandselectCommand=newSqlCommand();
selectCommand.CommandText="SaleChance_GetPaged";
selectCommand.Connection=Connection;
selectCommand.CommandType=CommandType.StoredProcedure;
SqlParameterprmPageIndex=newSqlParameter("@PageIndex",pageIndex);
selectCommand.Parameters.Add(prmPageIndex);
SqlParameterprmPageSize=newSqlParameter("@PageSize",pageSize);
selectCommand.Parameters.Add(prmPageSize);
SqlParameterprmOrderBy=newSqlParameter("@OrderBy",orderBy.Trim());
selectCommand.Parameters.Add(prmOrderBy);
SqlParameterprmWhereClause=newSqlParameter("@WhereClause",whereClause.Trim());
selectCommand.Parameters.Add(prmWhereClause);
da.SelectCommand=selectCommand;
DataTabledtSaleChances=null;
totalRowCount=0;
DataSetds=newDataSet();
try
{
Connection.Open();
da.Fill(ds);
dtSaleChances=ds.Tables[0];
totalRowCount=Convert.ToInt32(ds.Tables[1].Rows[0][0]);
}
catch(Exceptionex)
{
dtSaleChances=null;
}
finally
{
Connection.Close();
}
returndtSaleChances;
}
打开“解决方案资源管理器”,在程序集目录“DAL”下打开类文件“SaleChanceRepository.cs”,添加一个方法Delete()用于从数据库表“SaleChance”删除销售机会记录。
该方法实现代码如下:
publicboolDelete(intchanceId)
{
SqlCommandcmd=newSqlCommand("SaleChance_Delete",Connection);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameterprmChanceId=newSqlParameter("@ChanceId",SqlDbType.Int);
prmChanceId.Value=chanceId;
cmd.Parameters.Add(prmChanceId);
intdeletedRowCount=0;
try
{
Connection.Open();
deletedRowCount=cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
}
finally
{
Connection.Close();
}
returndeletedRowCount>0;
}
2.业务逻辑层BLL功能设计
打开“解决方案资源管理器”,在程序集目录“BLL”下打开类文件“SaleChanceService.cs”,添加对应的逻辑处理方法GetPaged()用于分页显示未指派人员和已指派人员的销售机会,该方法代码如下:
publicDataTableGetPaged(intpageIndex,intpageSize,stringorderBy,stringwhereClause,outinttotalRowCount)
{
if((whereClause==null)||(whereClause.Trim().Length<1))
{
whereClause="ChanceStatus<>"
+Convert.ToInt32(SALECHANCESTATUSVALUE.SUSPENDED).ToString()
+"ANDChanceStatus<>"
+Convert.ToI