1.查询房源
房源查询这个模块,可以根据 所选择的项目和楼栋来把房源的信息查询出来,具体体现如下。右边显示的是这个房源的具体信息,销售信息是某一个房源的重要操作记录(例如预定、预留之类的记录)。主界面如下图所示:
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
标注(Label) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
选项卡(TabControl) | |
下拉框(ComboBox) | |
文本(TextBox) | |
按钮(Button) | |
菜单(ToolStripMenuItem) | |
工具栏(ToolStrip) | |
表格(DataGridView) |
查询功能实现:
一:数据库
1、表与关系()
表1: 房间资源表(dbo.SYS_RoomResource)
Primary Key(主键): RoomResourcesID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
RoomResourcesID |
int - Identity |
|
No |
房间资源ID
|
FloorID |
int |
|
Yes |
楼栋信息表,楼栋ID
|
TheCodeModelID |
int |
|
Yes |
属性明细表,代码模式ID
|
Number |
nchar (10) |
|
Yes |
编号
|
UnitNumberID |
int |
|
Yes |
单元表,单元ID
|
FloorStotey |
nchar (10) |
|
Yes |
楼层
|
RoomCategoryID |
int |
|
Yes |
属性明细表,房间类别ID
|
TowardID |
int |
|
Yes |
属性明细表,朝向ID
|
DoorModelID |
int |
|
Yes |
属性明细表,户型ID
|
RoomTypeID |
int |
|
Yes |
属性明细表,房间类型ID
|
RoomLandScapeID |
int |
|
Yes |
属性明细表,房间景观ID
|
RoomSpecialID |
int |
|
Yes |
属性明细表,房间特殊ID
|
ConstructionArea |
decimal (18, 2) |
|
Yes |
建筑面积
|
PricateArea |
decimal (18, 2) |
|
Yes |
私有面积
|
PublicArea |
decimal (18, 2) |
|
Yes |
公摊面积
|
Usage |
decimal (18, 2) |
|
Yes |
使用率
|
TheUnitPrice |
decimal (18, 2) |
|
Yes |
标价单价
|
BidPrice |
decimal (18, 2) |
|
Yes |
标价总价
|
NumberOfPrice |
nchar (10) |
|
Yes |
价格次数
|
SalesStatusID |
int |
((102)) |
Yes |
属性明细表,销售状态ID
|
BriefNote |
nchar (30) |
|
Yes |
简要备注
|
SchematicDiagram |
image |
|
Yes |
示意图
|
Chart |
image |
|
Yes |
效果图
|
表2: 楼栋信息表(dbo.SYS_FloorInformation)
Primary Key(主键): FloorID
非主键ID值均是外键
(这里因为在这个表里边没有设置有默认值,所以没有默认值的那一列)
列名 |
数据类型 |
Nulls? |
说明 |
FloorID |
int - Identity |
No |
楼栋ID
|
ProjectID |
int |
Yes |
项目信息表,项目ID
|
FloorStructureID |
int |
Yes |
属性明细表,楼栋结构ID
|
OpenBatchID |
int |
Yes |
属性明细表,开盘批次ID
|
LaunchSituationID |
int |
Yes |
属性明细表,推出情况ID
|
OpeningSituationID |
int |
Yes |
属性明细表,开盘情况ID
|
FloorLevelID |
int |
Yes |
楼栋级别ID
|
SortNumber |
nchar (10) |
Yes |
序号
|
FloorName |
nchar (20) |
Yes |
楼栋名称
|
PropertyRightFloorName |
nchar (20) |
Yes |
产权楼栋名称
|
FloorStorey |
nchar (10) |
Yes |
楼栋层数
|
LaunchDate |
datetime |
Yes |
推出日期
|
DoMortgageDate |
datetime |
Yes |
具备办按揭日期
|
CapsDate |
datetime |
Yes |
封顶日期
|
AccumulationFundDate |
datetime |
Yes |
具备办公积金日期
|
ExpectedPayDate |
datetime |
Yes |
预计交房日期
|
PropertyRightDate |
datetime |
Yes |
具备办产权日期
|
MakingRoomDate |
datetime |
Yes |
交房日期 |
表3: 项目信息表(dbo.SYS_ProjectInformation)
Primary Key(主键): ProjectID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ProjectID |
int - Identity |
|
No |
项目ID
|
SortNumber |
int |
|
Yes |
排序号
|
ProjectAreaID |
int |
|
Yes |
属性明细表,项目区域ID
|
Project_FatherlID |
int |
|
Yes |
项目信息表,项目级别ID
|
ProjectName |
nchar (20) |
|
Yes |
项目名称
|
PropertyRightProjectName |
nchar (20) |
|
Yes |
产权项目名称
|
ProjectCompanyName |
nchar (20) |
|
Yes |
项目公司名称
|
ProjectAddress |
nchar (50) |
|
Yes |
项目座落地址
|
CaseWhether |
bit |
|
Yes |
是否结案
|
CancelWhether |
bit |
((0)) |
Yes |
有效否
|
表4: 属性集合表(dbo.SYS_AttributeSet)
Primary Key(主键): SYS_ShuXingJiHe
列名 |
数据类型 |
Nulls? |
说明 |
SYS_ShuXingJiHe |
int - Identity |
No |
属性集合ID
|
AttributeSetName |
nchar (10) |
Yes |
属性集合名称
|
表5: 属性明细表(dbo.SYS_AttributeDetails)
Primary Key(主键): AttributeDetailsID
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
AttributeDetailsID |
int - Identity |
|
No |
属性明细ID
|
AuttributeSetID |
int |
|
Yes |
属性集合表,属性集合ID
|
AuttributeDetailsName |
nchar (10) |
|
Yes |
属性明细名称
|
EffectiveWhether |
bit |
((1)) |
Yes |
有效否
|
2、绑定下拉框
第一步:数据库的存储过程
IF @Type='HousingQuery_Load_BindingcboProject'--绑定下拉框项目,查询项目
BEGIN
SELECT rtrim(ProjectName) as ProjectName, ProjectID
FROM SYS_ProjectInformation
END
IF @Type='HousingQuery_Load_BindingcboCategory'--绑定下拉框类别
BEGIN
SELECT AttributeDetailsID, rtrim(AuttributeDetailsName) as AuttributeDetailsName
FROM SYS_AttributeDetails
WHERE SYS_AttributeDetails.AuttributeSetID=4
END
IF @Type='HousingQuery_Load_BindingcboBuildingNumber'--绑定下拉框楼栋
BEGIN
SELECT FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM SYS_FloorInformation
END
IF @Type='HousingQuery_Load_BindingcboBuildingNumber_OnProjectID'--根据项目绑定下拉框楼栋
BEGIN
SELECT FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM SYS_FloorInformation
where SYS_FloorInformation.ProjectID=@ProjectID
END
第二步:逻辑层(BLL)代码(在敲代码前得新建一个类)----具体服务搭建详见上篇博文
DALPublic.DALPublic myDALPublic = new DALPublic.DALPublic();
[OperationContract]
#region 绑定项目下拉框
public DataSet HousingQuery_Load_BindingcboProject()
{
SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboProject";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定类别下拉框
public DataSet HousingQuery_Load_BindingcboCategory()
{
SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboCategory";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定楼栋下拉框
public DataSet HousingQuery_Load_BindingcboBuildingNumber()
{
SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboBuildingNumber";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:点击重新生成
第四步:界面层(UIL)代码,在窗体的Load事件中绑定下拉框的数据
BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery.frmMarketManagement_HousingQueryClient myfrmMarketManagement_HousingQuery = new BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery.frmMarketManagement_HousingQueryClient();
/// <summary>
///
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void frmMarketManagement_HousingQuery_Load(object sender, EventArgs e)
{
DataTable dtProject = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboProject().Tables[0];
DataTable dtCategory = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboCategory().Tables[0];
DataTable dtBuildingNumber = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboBuildingNumber().Tables[0];
cboProjectName.DataSource = dtProject;//绑定下拉了项目名称
cboProjectName.DisplayMember = "ProjectName";
cboProjectName.ValueMember = "ProjectID";
cboCategory.DataSource = dtCategory;
cboCategory.DisplayMember = "AuttributeDetailsName";
cboCategory.ValueMember = "AttributeDetailsID";
cboBuildingNumber.DataSource = dtBuildingNumber;//绑定下拉框楼栋
cboBuildingNumber.DisplayMember = "FloorName";
cboBuildingNumber.ValueMember = "FloorID";
intFloorID = (int)cboBuildingNumber.SelectedValue;//楼栋选定的是第一项
DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];//查询某楼栋的全部房源
Showdgv(dt);//执行自定义的方法,把房源绑定到dgv
dgvBuildingThePinControlSubsidiary.Focus();//dgv聚焦
dgvBuildingThePinControlSubsidiary.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //设定dgv默认单元格样式(居中对齐)
dgvBuildingThePinControlSubsidiary.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设定列标题样式
intProjectID = (int)cboProjectName.SelectedValue;
}
3、写下拉框SelectionChangeCommitted事件
第一步:数据库的存储过程
IF @Type='HousingQuery_Load_BindingcboBuildingNumber_OnProjectID'--根据项目绑定下拉框楼栋
BEGIN
SELECT FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM SYS_FloorInformation
where SYS_FloorInformation.ProjectID=@ProjectID
END
IF @Type='cboBuildingNumber_SelectionSelectRoom'--根据楼栋绑定房源
BEGIN
SELECT SYS_RoomResources.RoomResourcesID, rtrim(SYS_RoomResources.Number) as Number, rtrim(SYS_FloorInformation.FloorName) as FloorName, rtrim(SYS_RoomResources.FloorStotey) as FloorStotey, SYS_RoomResources.SalesStatusID
FROM SYS_RoomResources LEFT OUTER JOIN
SYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorID
where SYS_RoomResources.FloorID=@FloorID
END
第二步:逻辑层(BLL)代码
[OperationContract]
#region 根据项目ID绑定楼栋
public DataSet HousingQuery_Load_BindingcboBuildingNumber_OnProjectID(int intProjectID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@ProjectID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboBuildingNumber_OnProjectID";
SQLCMDpas[1].Value = intProjectID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 根据楼栋ID绑定房间
public DataSet cboBuildingNumber_SelectionSelectRoom(int intFloorID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@FloorID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "cboBuildingNumber_SelectionSelectRoom";
SQLCMDpas[1].Value = intFloorID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:界面层(UIL)代码,在SelectionChangeCommitted事件绑定数据
/// <summary>
/// cbo项目的SelectionChangeCommitted事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboProjectName_SelectionChangeCommitted(object sender, EventArgs e)
{
cboBuildingNumber.DataSource = //条件绑定楼栋
myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboBuildingNumber_OnProjectID(Convert.ToInt32(cboProjectName.SelectedValue)).Tables[0];
cboBuildingNumber.DisplayMember = "FloorName";//绑定显示成员
cboBuildingNumber.ValueMember = "FloorID";//绑定值成员
}
/// <summary>
/// cbo楼栋的SelectionChangeCommitted事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboBuildingNumber_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
intFloorID = (int)cboBuildingNumber.SelectedValue;
DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
Showdgv(dt);//执行用来绑定楼栋销控明细的方法
}
catch
{
MessageBox.Show("此楼栋暂时没有房间资源!请选择其他楼栋!");
}
dgvBuildingThePinControlSubsidiary.Focus();//dgv聚焦
}
/// <summary>
/// 自定义的方法,用来根据房源表来绑定楼栋销控明细表
/// </summary>
/// <param name="dt">dt是某一楼栋的房源表</param>
void Showdgv(DataTable dt)
{
decimal intSigning = 0;//签约
decimal intSubscrible = 0;//认购
decimal intReservation = 0;//预定
decimal intReserved = 0;//预留
decimal intKeep = 0;//保留
decimal intConfiscated = 0;//没收
decimal intUnsales = 0;//未售
decimal intAddUp = 0;//合计
dgvBuildingThePinControlSubsidiary.Rows.Clear();
dgvBuildingThePinControlSubsidiary.Columns.Clear();
int intFloorStoteyCount = 0;
for (int count = 0; count < dt.Rows.Count; count++)//获取某楼栋的楼层
{
if (intFloorStoteyCount < Convert.ToInt32(dt.Rows[count]["FloorStotey"]))
intFloorStoteyCount = Convert.ToInt32(dt.Rows[count]["FloorStotey"]);
}
int intUnitCount = dt.Rows.Count / intFloorStoteyCount;//获取某楼栋的每层编号
for (int ColumnCount = 0; ColumnCount < intUnitCount; ColumnCount++)//根据编号来添加列
{
dgvBuildingThePinControlSubsidiary.Columns.Add(ColumnCount.ToString().Trim(), ((ColumnCount + 1).ToString().Length > 1 ? (ColumnCount + 1).ToString() : "0" + (ColumnCount + 1).ToString()));
}
dgvBuildingThePinControlSubsidiary.Columns.Add("Title", "楼层﹨编号");//添加一列用来显示楼层的
dgvBuildingThePinControlSubsidiary.Columns["Title"].Width = 110;
dgvBuildingThePinControlSubsidiary.Columns["Title"].DisplayIndex = 0;
dgvBuildingThePinControlSubsidiary.Columns[intUnitCount].Frozen = true;
for (int intcount = intFloorStoteyCount; intcount > 0; intcount--)//根据楼层绑定行
{
DataTable dtTest = new DataTable();
string strCondition = " FloorStotey = " + intcount;//字符串拼接DataView的过滤条件
DataView dv = new DataView(dt);
dv.RowFilter = strCondition;//过滤
dtTest = dv.ToTable();//用另外一个表去装过滤后的数据
int intColumnIndex = 0;
dgvBuildingThePinControlSubsidiary.Rows.Add();
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].HeaderCell.ToolTipText = (dgvBuildingThePinControlSubsidiary.Rows.Count - 1).ToString();
for (int dtRowCount = 0; dtRowCount < dtTest.Rows.Count; dtRowCount++)//根据编号绑定单元格
{
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Value = dtTest.Rows[intColumnIndex]["Number"];
switch (Convert.ToInt32(dtTest.Rows[intColumnIndex]["SalesStatusID"]))
{
case 96: //签约
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Red;
intSigning++;
break;
case 97: //认购
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
intSubscrible++;
break;
case 98: //预留
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Lime;
intReserved++;
break;
case 99: //预定 intReservation
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Yellow;
intReservation++;
break;
case 100: //保留
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Cyan;
intKeep++;
break;
case 101: //没收
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Fuchsia;
intConfiscated++;
break;
case 102: //未售
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Silver;
intUnsales++;
break;
}
intColumnIndex++;
}
dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Value = intcount.ToString();
}
txtSigning.Text = intSigning.ToString().Trim();//签约
txtSubscrible.Text = intSubscrible.ToString().Trim();//认购
txtReservation.Text = intReservation.ToString().Trim(); //预定
txtReserved.Text = intReserved.ToString().Trim(); //预留
txtKeep.Text = intKeep.ToString().Trim(); //保留
txtConfiscated.Text = intConfiscated.ToString().Trim();//认筹
txtUnsales.Text = intUnsales.ToString().Trim();//未售
intAddUp = intFloorStoteyCount * intUnitCount;//合计总数计算
txtAddUp.Text = intAddUp.ToString().Trim();//合计
txtAccountFor.Text = (intSigning / intAddUp*100).ToString("F2");//保存两位小数再转为字符串绑定给文本框
txtAccountFor1.Text = (intSubscrible / intAddUp * 100).ToString("F2");
txtAccountFor2.Text = (intReservation / intAddUp * 100).ToString("F2");
txtAccountFor3.Text = (intReserved / intAddUp * 100).ToString("F2");
txtAccountFor4.Text = (intKeep / intAddUp * 100).ToString("F2");
txtAccountFor5.Text = (intConfiscated / intAddUp * 100).ToString("F2");
txtAccountFor6.Text = (intUnsales / intAddUp * 100).ToString("F2");
txtAccountFor7.Text = "100.00";//这里的一大段是绑定该楼栋各状态房源的数量和比例
}
4、dgv楼栋销控明细的单击事件—绑定房源信心和销售信息
第一步:数据库的存储过程
IF @Type='dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg'--根据楼栋ID和编号来查询某一房源
BEGIN
SELECT SYS_RoomResources.RoomResourcesID, rtrim(SYS_RoomResources.Number) as Number, rtrim(SYS_RoomResources.FloorStotey) as FloorStotey, rtrim(SYS_AttributeDetails_1.AuttributeDetailsName) AS RoomCategory,
rtrim(SYS_AttributeDetails_2.AuttributeDetailsName) AS Toward, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS DoorModel, rtrim(SYS_AttributeDetails_3.AuttributeDetailsName) AS RoomType,
rtrim(SYS_RoomResources.ConstructionArea) as ConstructionArea, rtrim(SYS_RoomResources.PricateArea) as PricateArea, rtrim(SYS_RoomResources.TheUnitPrice) as TheUnitPrice, rtrim(SYS_RoomResources.BidPrice) as BidPrice, rtrim(SYS_RoomResources.BriefNote) as BriefNote,
rtrim(SYS_FloorInformation.FloorName) as FloorName, SYS_FloorInformation.FloorID, SYS_RoomResources.SalesStatusID
FROM SYS_RoomResources INNER JOIN
SYS_AttributeDetails AS SYS_AttributeDetails_1 ON SYS_RoomResources.RoomCategoryID = SYS_AttributeDetails_1.AttributeDetailsID INNER JOIN
SYS_AttributeDetails AS SYS_AttributeDetails_2 ON SYS_RoomResources.TowardID = SYS_AttributeDetails_2.AttributeDetailsID INNER JOIN
SYS_AttributeDetails ON SYS_RoomResources.DoorModelID = SYS_AttributeDetails.AttributeDetailsID INNER JOIN
SYS_AttributeDetails AS SYS_AttributeDetails_3 ON SYS_RoomResources.RoomTypeID = SYS_AttributeDetails_3.AttributeDetailsID INNER JOIN
SYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorID
where SYS_RoomResources.FloorID=@FloorID and SYS_RoomResources.Number=@Number
END
if @Type='dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail'--dgv单击元格,查询相关销售详细信息
begin
SELECT rtrim(PW_SalesOfServiceFloowDetail.BriefNote) as BriefNote, PW_SalesOfServiceFloowDetail.RoomResourceID, rtrim(PW_SalesOfServiceFloowDetail.OperatingType) as OperatingType, rtrim(PW_SalesOfServiceFloowDetail.OperatingTime) as OperatingTime,
rtrim(SYS_Staff.StaffName) as StaffName, rtrim(PW_SalesOfServiceFloowDetail.OperatingPeople) as OperatingPeople, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS OperatingType
FROM PW_SalesOfServiceFloowDetail INNER JOIN
SYS_Staff ON PW_SalesOfServiceFloowDetail.OperatingPeople = SYS_Staff.StaffID INNER JOIN
SYS_AttributeDetails ON PW_SalesOfServiceFloowDetail.OperatingType = SYS_AttributeDetails.AttributeDetailsID
where PW_SalesOfServiceFloowDetail.RoomResourceID=@RoomResourceID
end
第二步:逻辑层(BLL)代码
[OperationContract]
#region 条件查询某一房间信息
public DataSet dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg(int intFloorID,string strNumber)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@FloorID", SqlDbType.Int),
new SqlParameter("@Number", SqlDbType.Char),
};
SQLCMDpas[0].Value = "dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg";
SQLCMDpas[1].Value = intFloorID;
SQLCMDpas[2].Value = strNumber;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定销售关键流程明细/绑定销售信息
public DataSet dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail(int intRoomResourcesID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@RoomResourceID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail";
SQLCMDpas[1].Value = intRoomResourcesID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_SubscribeToSign_InsertSubcribe", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:界面层(UIL)代码
private void dgvBuildingThePinControlSubsidiary_CellClick(object sender, DataGridViewCellEventArgs e)//dgv的单击事件
{
if (dgvBuildingThePinControlSubsidiary.CurrentCell.ColumnIndex != dgvBuildingThePinControlSubsidiary.Columns.Count-1)
{
strUnitNumber = dgvBuildingThePinControlSubsidiary.CurrentCell.Value.ToString().Trim();
DataTable dtRoomMsg = myfrmMarketManagement_HousingQuery.dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg(intFloorID, strUnitNumber).Tables[0];//根据楼栋ID和房源编号来确定某一房源
#region 右边房源信息和销售信息里边的信息绑定
txtBuildingNumber.Text = dtRoomMsg.Rows[0]["FloorName"].ToString().Trim();
strFloorName = dtRoomMsg.Rows[0]["FloorName"].ToString().Trim();
intRoomResourceID = (int)dtRoomMsg.Rows[0]["RoomResourcesID"];
txtUnitNumber.Text = dtRoomMsg.Rows[0]["Number"].ToString().Trim();
txtFloorStorey.Text = dtRoomMsg.Rows[0]["FloorStotey"].ToString().Trim();
txtCategory.Text = dtRoomMsg.Rows[0]["RoomCategory"].ToString().Trim();
txtToward.Text = dtRoomMsg.Rows[0]["Toward"].ToString().Trim();
txtDoorModel.Text = dtRoomMsg.Rows[0]["DoorModel"].ToString().Trim();
txtRoomModel.Text = dtRoomMsg.Rows[0]["RoomType"].ToString().Trim();
txtBuildingArea.Text = dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim();
txtPrivateArea.Text = dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim();
txtEquallySharedArea.Text = (Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim()) - Convert.ToDecimal(dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim())).ToString();
txtEquallySharedRate.Text = ((Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim()) - Convert.ToDecimal(dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim())) / Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim())).ToString();
txtUnitPrice.Text = dtRoomMsg.Rows[0]["TheUnitPrice"].ToString().Trim();
txtPrice.Text = dtRoomMsg.Rows[0]["BidPrice"].ToString().Trim();
txtInstructions.Text = dtRoomMsg.Rows[0]["BriefNote"].ToString().Trim();
intRoomstatus = (int)dtRoomMsg.Rows[0]["SalesStatusID"];
DataTable dt = myfrmMarketManagement_HousingQuery.dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail(intRoomResourceID).Tables[0];
dgvSalesOfServiceFloowDetail.DataSource = dt;//绑定销售信息明细
#endregion
}
}
5、窗口跳转
/// <summary>
/// 添加保留的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnKeepAdding_Click(object sender, EventArgs e)
{
if (strUnitNumber == "")
{
MessageBox.Show("请选择一间房间后继续!","提示");
return;
}
if (intRoomstatus != 102)
{
MessageBox.Show("不是未售状态的房源是无法保留的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
return;
}
frmMarketManagement_HousingQuery_KeepAdding myfrmMarketManagement_HousingQuery_KeepAdding = new frmMarketManagement_HousingQuery_KeepAdding(this);//带参数实例,是窗体传值
myfrmMarketManagement_HousingQuery_KeepAdding.ShowDialog();
}
/// <summary>
/// 添加预定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDueToAdd_Click(object sender, EventArgs e)
{
if (strUnitNumber == "")
{
MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
return;
}
if (intRoomstatus != 102)
{
MessageBox.Show("不是未售状态的房源是无法预定的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
return;
}
int intProjectID = (int)cboProjectName.SelectedValue;
intFloorID = (int)cboBuildingNumber.SelectedValue;
frmMarketManagement_ReserveManagement_InsertReserve myfrmMarketManagement_ReserveManagement_InsertReserve = new frmMarketManagement_ReserveManagement_InsertReserve(this, intProjectID);//带参数实例,是窗体传值
myfrmMarketManagement_ReserveManagement_InsertReserve.ShowDialog();
intFloorID = (int)cboBuildingNumber.SelectedValue;
DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
Showdgv(dt);
}
/// <summary>
/// 添加认购
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSubscribleToAdd_Click(object sender, EventArgs e)
{
if (strUnitNumber == "")//判断,如果没用点击房间就不能继续
{
MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
return;
}
if (intRoomstatus == 96 || intRoomstatus == 97 || intRoomstatus == 101)//判断处于签约、认购、没收状态的不能添加认购
{
MessageBox.Show("处于签约、认购、没收状态下的房源无法进行此操作,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
return;
}
int intProjectID = (int)cboProjectName.SelectedValue;
intFloorID = (int)cboBuildingNumber.SelectedValue;
frmMarketManagement_SubscribeToSign_InsertSubcribe myfrmMarketManagement_SubscribeToSign_InsertSubcribe = new frmMarketManagement_SubscribeToSign_InsertSubcribe(this, intProjectID);//带参数实例,是窗体传值
myfrmMarketManagement_SubscribeToSign_InsertSubcribe.ShowDialog();
intFloorID = (int)cboBuildingNumber.SelectedValue;
DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
Showdgv(dt);
}
2.保留添加
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
标注(Label) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
日期控件(DateTimePicker) | |
下拉框(ComboBox) | |
文本(TextBox) | |
按钮(Button) | |
数字输入框(NumericUpDown) | |
表格(DataGridView) | |
图片列表(ImageList) |
功能实现:
第一步:数据库
1、表与关系
表1: 房间资源表(dbo.SYS_RoomResource)
Primary Key(主键): RoomResourcesID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
RoomResourcesID |
int - Identity |
|
No |
房间资源ID
|
FloorID |
int |
|
Yes |
楼栋信息表,楼栋ID
|
TheCodeModelID |
int |
|
Yes |
属性明细表,代码模式ID
|
Number |
nchar (10) |
|
Yes |
编号
|
UnitNumberID |
int |
|
Yes |
单元表,单元ID
|
FloorStotey |
nchar (10) |
|
Yes |
楼层
|
RoomCategoryID |
int |
|
Yes |
属性明细表,房间类别ID
|
TowardID |
int |
|
Yes |
属性明细表,朝向ID
|
DoorModelID |
int |
|
Yes |
属性明细表,户型ID
|
RoomTypeID |
int |
|
Yes |
属性明细表,房间类型ID
|
RoomLandScapeID |
int |
|
Yes |
属性明细表,房间景观ID
|
RoomSpecialID |
int |
|
Yes |
属性明细表,房间特殊ID
|
ConstructionArea |
decimal (18, 2) |
|
Yes |
建筑面积
|
PricateArea |
decimal (18, 2) |
|
Yes |
私有面积
|
PublicArea |
decimal (18, 2) |
|
Yes |
公摊面积
|
Usage |
decimal (18, 2) |
|
Yes |
使用率
|
TheUnitPrice |
decimal (18, 2) |
|
Yes |
标价单价
|
BidPrice |
decimal (18, 2) |
|
Yes |
标价总价
|
NumberOfPrice |
nchar (10) |
|
Yes |
价格次数
|
SalesStatusID |
int |
((102)) |
Yes |
属性明细表,销售状态ID
|
BriefNote |
nchar (30) |
|
Yes |
简要备注
|
SchematicDiagram |
image |
|
Yes |
示意图
|
Chart |
image |
|
Yes |
效果图
|
表2: 楼栋信息表(dbo.SYS_FloorInformation)
Primary Key(主键): FloorID
非主键ID值均是外键
(这里因为在这个表里边没有设置有默认值,所以没有默认值的那一列)
列名 |
数据类型 |
Nulls? |
说明 |
FloorID |
int - Identity |
No |
楼栋ID
|
ProjectID |
int |
Yes |
项目信息表,项目ID
|
FloorStructureID |
int |
Yes |
属性明细表,楼栋结构ID
|
OpenBatchID |
int |
Yes |
属性明细表,开盘批次ID
|
LaunchSituationID |
int |
Yes |
属性明细表,推出情况ID
|
OpeningSituationID |
int |
Yes |
属性明细表,开盘情况ID
|
FloorLevelID |
int |
Yes |
楼栋级别ID
|
SortNumber |
nchar (10) |
Yes |
序号
|
FloorName |
nchar (20) |
Yes |
楼栋名称
|
PropertyRightFloorName |
nchar (20) |
Yes |
产权楼栋名称
|
FloorStorey |
nchar (10) |
Yes |
楼栋层数
|
LaunchDate |
datetime |
Yes |
推出日期
|
DoMortgageDate |
datetime |
Yes |
具备办按揭日期
|
CapsDate |
datetime |
Yes |
封顶日期
|
AccumulationFundDate |
datetime |
Yes |
具备办公积金日期
|
ExpectedPayDate |
datetime |
Yes |
预计交房日期
|
PropertyRightDate |
datetime |
Yes |
具备办产权日期
|
MakingRoomDate |
datetime |
Yes |
交房日期 |
表3: 房源保留表(dbo.PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
|
No |
保留ID
|
FloorID |
int |
|
Yes |
楼栋信息表,楼栋ID
|
RoomResourcesID |
int |
|
Yes |
房间资源ID,房间ID
|
UnitPrice |
decimal (18, 2) |
|
Yes |
单价
|
Price |
decimal (18, 2) |
|
Yes |
售价
|
KeepPeople |
int |
|
Yes |
保留人
|
Note |
nchar (300) |
|
Yes |
说明
|
StartDate |
datetime |
|
Yes |
开始时间
|
KeepTime |
nchar (10) |
|
Yes |
保留时长
|
KeepDate |
nchar (10) |
|
Yes |
保留天数
|
OperatingPerson |
int |
|
Yes |
经办人员
|
IncalidOr |
bit |
((0)) |
Yes |
作废否
|
表4: 客户信息 (dbo. PW_ClientInformation)
Primary Key(主键): ClientID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientID |
int - Identity |
|
No |
客户ID
|
ProjectID |
int |
|
Yes |
项目信息表,项目ID
|
ClientNumber |
nchar (10) |
|
Yes |
客户编号
|
ClientName |
nchar (10) |
|
Yes |
客户名称
|
EarlyVisitIntention |
nchar (10) |
|
Yes |
初访意向
|
Gender |
nchar (10) |
|
Yes |
性别
|
MaritalStatus |
nchar (10) |
|
Yes |
婚否
|
ClientRegistrationWayID |
int |
|
Yes |
属性明细表,客户登记方式ID
|
RelationPhone |
nchar (15) |
|
Yes |
联系电话
|
ElectronMail |
nchar (30) |
|
Yes |
电子邮箱
|
HomeBuyerConsultantID |
int |
|
Yes |
员工表,置业顾问ID
|
DateOfVisit |
datetime |
|
Yes |
来访日期
|
CommunicationAddress |
nchar (50) |
|
Yes |
通讯地址
|
Postcode |
nchar (10) |
|
Yes |
邮编
|
IDentityCard |
nchar (30) |
|
Yes |
身份证号
|
BirthDay |
date |
|
Yes |
出生日期
|
Age |
nchar (20) |
|
Yes |
年龄
|
Professional |
nchar (20) |
|
Yes |
职业
|
NowLivingArea |
nchar (20) |
|
Yes |
现居住区域
|
LearnTheWayToTheCase |
nchar (20) |
|
Yes |
获取本案途径
|
VisitConstitute |
nchar (20) |
|
Yes |
来客构成
|
Traffic |
nchar (20) |
|
Yes |
交通
|
RealEstateSituation |
nchar (20) |
|
Yes |
置业状况
|
ResidentialMortgageLoans |
nchar (20) |
|
Yes |
住宅按揭贷款
|
HomesBuyersPurpose |
nchar (20) |
|
Yes |
置业目的
|
PlanTorealEstatePrice |
nchar (20) |
|
Yes |
计划置业价格
|
DemandArea |
nchar (20) |
|
Yes |
需求面积
|
PaymentWay |
nchar (20) |
|
Yes |
付款方式ID
|
BuyingConsideration |
nchar (20) |
|
Yes |
买房考虑因素
|
IncalidOr |
bit |
((0)) |
Yes |
作废否
|
表5: 员工表 (dbo. SYS_Staff)
Primary Key(主键): StaffID
非主键ID值均是外键
Field |
Type |
Nulls? |
Comments |
StaffID |
int - Identity |
No |
员工ID
|
StaffNumber |
nchar (10) |
Yes |
员工编号
|
StaffName |
nchar (10) |
Yes |
员工姓名
|
DepartMentID |
int |
Yes |
属性明细表,所属部门
|
GenderID |
int |
Yes |
属性明细表,性别ID
|
Age |
int |
Yes |
属性明细表,年龄
|
EducationBackgroundID |
int |
Yes |
属性明细表,学历ID
|
MarryWhether |
bit |
Yes |
婚否
|
Position |
nchar (10) |
Yes |
职位
|
ContactPhoneNumber |
nchar (15) |
Yes |
联系电话
|
ContactAddress |
nchar (20) |
Yes |
联系地址
|
Notes |
nchar (100) |
Yes |
备注
|
StaffImage |
image |
Yes |
员工照片
|
2、绑定下拉框和相应的房源
第一步:窗体传值过来(UIL)
frmMarketManagement_HousingQuery Frm;//声明父窗体
public frmMarketManagement_HousingQuery_KeepAdding(frmMarketManagement_HousingQuery frm)//从父窗体传值过来
{
Frm = frm;//将传过来的父窗体赋给自己声明的那个,不然是调用不了父窗体里边的数据或方法
InitializeComponent();
}
第二步:数据库存储过程
if @Type='KeepAdding_Load_BindingcboPersonInCharge'--查询绑定cbo置业顾问和经办人的数据
begin
SELECT StaffID, rtrim(StaffName) as StaffName
FROM SYS_Staff
end
if @Type='KeepAdding_Load_BindingdgvCustom'--根据房源所在的项目来绑定相应的客户
begin
SELECT ClientID, RTRIM(ClientName) AS ClientName, RTRIM(Gender) AS Gender, HomeBuyerConsultantID
FROM PW_ClientInformation
where PW_ClientInformation.IncalidOr=0 and PW_ClientInformation.ProjectID=@ProjectID
end
第三步:逻辑层(BLL)代码
DALPublic.DALPublic myDALPublic = new DALPublic.DALPublic();//实例化DAL
[OperationContract]
#region 绑定经办人员下拉框
public DataSet KeepAdding_Load_BindingcboPersonInCharge()
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "KeepAdding_Load_BindingcboPersonInCharge";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定dgvCustom
public DataSet KeepAdding_Load_BindingdgvCustom(int intRoomResourcesID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@ProjectID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "KeepAdding_Load_BindingdgvCustom";
SQLCMDpas[1].Value = intRoomResourcesID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第四步:界面层(UIL)代码
BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery_KeepAdding.frmMarketManagement_HousingQuery_KeepAddingClient myfrmMarketManagement_HousingQuery_KeepAddingClient = new BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery_KeepAdding.frmMarketManagement_HousingQuery_KeepAddingClient();//实例化BLL,以便下面调用
private void frmMarketManagement_HousingQuery_KeepAdding_Load(object sender, EventArgs e)
{
txtBuilingNumber.Text = Frm.strFloorName;//将父窗体里边所选定的楼栋名称,绑定到这个界面
txtUnitNumber.Text = Frm.strUnitNumber;//将父窗体里边所选定的房源编号,绑定到这个界面
DataTable dtCustom = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingdgvCustom(Frm.intProjectID).Tables[0];
dgvCustom.DataSource = dtCustom;//绑定dgv客户
cboHomeBuyersConsultant.DataSource = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingcboPersonInCharge().Tables[0];//绑定cbo置业顾问的数据源
cboHomeBuyersConsultant.DisplayMember = "StaffName";//绑定显示成员
cboHomeBuyersConsultant.ValueMember = "StaffID";//绑定值成员
cboPersonInCharge.DataSource = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingcboPersonInCharge().Tables[0];//绑定经办人的数据源
cboPersonInCharge.DisplayMember = "StaffName";
cboPersonInCharge.ValueMember = "StaffID";
}
3、输入数据的限制与提取、保留房源的新增
第一步:数据库的存储过程
if @Type='btnSave_Click_Insert'--新增保留信息
begin
INSERT INTO PW_RoomSelect_Keep
(FloorID, RoomResourcesID, UnitPrice, Price, KeepPeople, Note, StartDate, KeepTime, KeepDate, OperatingPerson)
VALUES (@BuildingAMovieTheatherID, @RoomResourcesID, @UnitPrice, @Price, @KeepPeople, @Note, @StartDate, @KeepTime, @KeepDate, @OperatingPerson)
end
if @Type='btnSave_Click_UpdateSalesStatus'--新增保留后保房源的销售状态更改为保留
begin
UPDATE SYS_RoomResources
SET SalesStatusID = 100
where SYS_RoomResources.RoomResourcesID=@RoomResourcesID
end
if @Type = 'PublicMethod_InsertSalesOfServiceFloowDetail'--新增销售记录
begin
INSERT INTO PW_SalesOfServiceFloowDetail
(BriefNote, RoomResourceID, ReserveID, KeepID, ClientConfessToRaiseID, Confiscated, Signing, OperatingTime, OperatingPeople, OperatingType)
VALUES (@BriefNote,@RoomResourceID,@ReserveID,@KeepID,@ClientConfessToRaiseID,@Confiscated,@Signing,@OperatingTime,@OperatingPeople,@OperatingType)
end
if @Type = 'PublicMethod_InsertClientEventRecord'--新增客户重要操作事件记录
begin
INSERT INTO PW_ClientEventRecord
(ClientID, RecordDate, Characteristic, explain)
VALUES (@ClientID, @RecordDate,@Characteristic, @explain)
end
第二步:逻辑层的代码(BLL)
[OperationContract]
#region 添加保留
public int btnSave_Click_Insert(int intBuildingAMovieTheatherID, int intRoomResourcesID,decimal decUnitPrice, decimal decPrice, int intKeepPeople,string strNote,DateTime dtmStartDate,string strKeepTime,string strKeepDate,int intOperatingPerson)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@BuildingAMovieTheatherID", SqlDbType.Int),
new SqlParameter("@RoomResourcesID", SqlDbType.Int),
new SqlParameter("@UnitPrice", SqlDbType.Char),
new SqlParameter("@Price", SqlDbType.Char),
new SqlParameter("@KeepPeople", SqlDbType.Char),
new SqlParameter("@Note", SqlDbType.Char),
new SqlParameter("@StartDate", SqlDbType.DateTime),
new SqlParameter("@KeepTime", SqlDbType.Char),
new SqlParameter("@KeepDate", SqlDbType.Char),
new SqlParameter("@OperatingPerson", SqlDbType.Int),
};
SQLCMDpas[0].Value = "btnSave_Click_Insert";
SQLCMDpas[1].Value = intBuildingAMovieTheatherID;
SQLCMDpas[2].Value = intRoomResourcesID;
SQLCMDpas[3].Value = decUnitPrice;
SQLCMDpas[4].Value = decPrice;
SQLCMDpas[5].Value = intKeepPeople;
SQLCMDpas[6].Value = strNote;
SQLCMDpas[7].Value = dtmStartDate;
SQLCMDpas[8].Value = strKeepTime;
SQLCMDpas[9].Value = strKeepDate;
SQLCMDpas[10].Value = intOperatingPerson;
return myDALPublic.DAL_OPTableDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
}
#endregion
[OperationContract]
#region 修改已经添加保留的房间状态
public int btnSave_Click_UpdateSalesStatus(int intRoomResourcesID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@RoomResourcesID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "btnSave_Click_UpdateSalesStatus";
SQLCMDpas[1].Value = intRoomResourcesID;
return myDALPublic.DAL_OPTableDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
}
#endregion
第三步:界面层的代码(UIL)
private void txtKeepPeople_Enter(object sender, EventArgs e)//当光标进入文本框保留人时候
{
dgvCustom.Visible = true;//dgv客户的可见性为真
}
private void dgvCustom_MouseLeave(object sender, EventArgs e)//当鼠标离开dgv客户后,dgv客户的可见性为假
{
dgvCustom.Visible = false;
}
int intCustomID = 0;//声明全局变量
private void dgvCustom_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)//dgv的双击事件,通过双击来选择客户
{
intCustomID = (int)dgvCustom.CurrentRow.Cells["客户ID"].Value;//绑定全局变量客户ID(intCustomID)
txtKeepPeople.Text = dgvCustom.CurrentRow.Cells["姓名"].Value.ToString().Trim();//绑定文本框
dgvCustom.Visible = false;//dgv客户的可见性为假
}
private void btnSave_Click(object sender, EventArgs e)
{
if (intCustomID == 0)//如果客户ID没有选择,则跳出事件方法
{
MessageBox.Show("请添加保留人后继续!");
return;
}
int intBuildingAMovieTheatherID = Frm.intFloorID; //获取相应的数据
int intRoomResourcesID = Frm.intRoomResourceID;
decimal decUnitPrice =Convert.ToDecimal( txtUnitPrice.Text);
decimal decPrice = Convert.ToDecimal(txtSalesprice.Text);
string strNote = txtInstructions.Text.ToString();
DateTime dtmStartDate = dtpStartingTime.Value;
string strKeepTime = nudRetrntionTime.Value.ToString();
string strKeepDate = nudKeepthenumber.Value.ToString();
int intOperatingPerson = (int)cboPersonInCharge.SelectedValue;//获取相应的数据
int myop = myfrmMarketManagement_HousingQuery_KeepAddingClient.btnSave_Click_Insert(intBuildingAMovieTheatherID, intRoomResourcesID, decUnitPrice, decPrice, intCustomID, strNote, dtmStartDate, strKeepTime, strKeepDate, intOperatingPerson);//调用BLL把参数传到DAL再穿到数据库,实现新增
if (myop > 0)
{
int myupdate = myfrmMarketManagement_HousingQuery_KeepAddingClient.btnSave_Click_UpdateSalesStatus(intRoomResourcesID);
DateTime dtmOperatingTime = DateTime.Now;
PublicMethod.Pub_InsertClientEventRecord(intCustomID, dtmOperatingTime, "添加保留", "添加保留房源");//新增成功之后,执行公用方法,新增客户重要事件记录
PublicMethod.Pub_InsertSalesOfServiceFloowDetail(" 添加预留", intRoomResourcesID, 0, 0, 0, 0, 0, dtmOperatingTime, 1, 144);//新增成功之后,执行公用方法,新增销售关键操作记录
MessageBox.Show("添加保留成功!");
Frm.Refresh();//调用父窗体,执行刷新功能
this.Close();
}
}
private void txtUnitPrice_KeyPress(object sender, KeyPressEventArgs e)
{
PublicMethod.pubPriceOrRate_KeyPress(sender,e);//调取公用限制只能输入数字的方法,来限制输入
}
private void txtSalesprice_KeyPress(object sender, KeyPressEventArgs e)
{
PublicMethod.pubPriceOrRate_KeyPress(sender, e);//调取公用限制只能输入数字的方法,来限制输入
}
private void btnReturn_Click(object sender, EventArgs e)//点击返回,退出页面
{
this.Dispose();//释放窗体的资源
this.Close();//关闭窗体
}
3.预定添加
(这里的添加预定的代码只要是在房源查询调用预定管理的新增界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)
1、UIL窗体传值具体的代码
第一步:查询房源界面里边窗体跳转的具体代码
/// <summary>
/// 添加保留的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnKeepAdding_Click(object sender, EventArgs e)
{
if (strUnitNumber == "")
{
MessageBox.Show("请选择一间房间后继续!","提示");
return;
}
if (intRoomstatus != 102)
{
MessageBox.Show("不是未售状态的房源是无法保留的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
return;
}
frmMarketManagement_HousingQuery_KeepAdding myfrmMarketManagement_HousingQuery_KeepAdding = new frmMarketManagement_HousingQuery_KeepAdding(this);//带参数实例,是窗体传值
myfrmMarketManagement_HousingQuery_KeepAdding.ShowDialog();
}
第二步:子窗体接收父窗体传过来的值
frmMarketManagement_HousingQuery Frm;//声明父窗体
public frmMarketManagement_HousingQuery_KeepAdding(frmMarketManagement_HousingQuery frm)//从父窗体传值过来
{
Frm = frm;//将传过来的父窗体赋给自己声明的那个,不然是调用不了父窗体里边的数据或方法
InitializeComponent();
}
4.认购添加
(这里的添加认购的代码只要是在房源查询里边调用认购签约的新增认购界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)
1、UIL窗体传值具体的代码
第一步:查询房源界面里边窗体跳转的具体代码 /// <summary>
/// 添加认购
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSubscribleToAdd_Click(object sender, EventArgs e)
{
if (strUnitNumber == "")//判断,如果没用点击房间就不能继续
{
MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
return;
}
if (intRoomstatus == 96 || intRoomstatus == 97 || intRoomstatus == 101)//判断处于签约、认购、没收状态的不能添加认购
{
MessageBox.Show("处于签约、认购、没收状态下的房源无法进行此操作,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
return;
}
int intProjectID = (int)cboProjectName.SelectedValue;
intFloorID = (int)cboBuildingNumber.SelectedValue;
frmMarketManagement_SubscribeToSign_InsertSubcribe myfrmMarketManagement_SubscribeToSign_InsertSubcribe = new frmMarketManagement_SubscribeToSign_InsertSubcribe(this, intProjectID);//带参数实例,是窗体传值
myfrmMarketManagement_SubscribeToSign_InsertSubcribe.ShowDialog();
intFloorID = (int)cboBuildingNumber.SelectedValue;
DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
Showdgv(dt);//执行绑定dgv的方法,实现刷新的功能
}
第二步:认购添加界面接收房源查询传过去的值
frmMarketManagement_HousingQuery FrmHousingQuery;//声明房源查询窗体,用来装房源查询传过来的值
int intprojectID = 0;
/// <summary>
///
/// </summary>
/// <param name="frm">传过来的窗体</param>
/// <param name="intProjectID">传过来的项目ID</param>
public frmMarketManagement_SubscribeToSign_InsertSubcribe(frmMarketManagement_HousingQuery frm,int intProjectID)
{
FrmHousingQuery = frm;//将传过来的值赋给声明的那个全局变量窗体
intprojectID = intProjectID;
InitializeComponent();
}
本次更新至这里,余下会将我所做的继续更新。本贴只用于学术用途,如用于商业用途,后果自负!!!