发布时间:2025-12-09 21:52:39 浏览次数:4
房源查询这个模块,可以根据 所选择的项目和楼栋来把房源的信息查询出来,具体体现如下。右边显示的是这个房源的具体信息,销售信息是某一个房源的重要操作记录(例如预定、预留之类的记录)。主界面如下图所示:
一:数据库
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'--绑定下拉框项目,查询项目BEGINSELECT rtrim(ProjectName) as ProjectName, ProjectIDFROM SYS_ProjectInformationENDIF @Type='HousingQuery_Load_BindingcboCategory'--绑定下拉框类别BEGINSELECT AttributeDetailsID, rtrim(AuttributeDetailsName) as AuttributeDetailsNameFROM SYS_AttributeDetailsWHERE SYS_AttributeDetails.AuttributeSetID=4ENDIF @Type='HousingQuery_Load_BindingcboBuildingNumber'--绑定下拉框楼栋BEGINSELECT FloorID, ProjectID, rtrim(FloorName) as FloorNameFROM SYS_FloorInformationENDIF @Type='HousingQuery_Load_BindingcboBuildingNumber_OnProjectID'--根据项目绑定下拉框楼栋BEGINSELECT FloorID, ProjectID, rtrim(FloorName) as FloorNameFROM SYS_FloorInformationwhere SYS_FloorInformation.ProjectID=@ProjectIDEND第二步:逻辑层(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);//执行自定义的方法,把房源绑定到dgvdgvBuildingThePinControlSubsidiary.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'--根据项目绑定下拉框楼栋BEGINSELECT FloorID, ProjectID, rtrim(FloorName) as FloorNameFROM SYS_FloorInformationwhere SYS_FloorInformation.ProjectID=@ProjectIDENDIF @Type='cboBuildingNumber_SelectionSelectRoom'--根据楼栋绑定房源BEGINSELECT SYS_RoomResources.RoomResourcesID, rtrim(SYS_RoomResources.Number) as Number, rtrim(SYS_FloorInformation.FloorName) as FloorName, rtrim(SYS_RoomResources.FloorStotey) as FloorStotey, SYS_RoomResources.SalesStatusIDFROM SYS_RoomResources LEFT OUTER JOINSYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorIDwhere SYS_RoomResources.FloorID=@FloorIDEND
第二步:逻辑层(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: //预定 intReservationdgvBuildingThePinControlSubsidiary.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和编号来查询某一房源BEGINSELECT 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.SalesStatusIDFROM SYS_RoomResources INNER JOINSYS_AttributeDetails AS SYS_AttributeDetails_1 ON SYS_RoomResources.RoomCategoryID = SYS_AttributeDetails_1.AttributeDetailsID INNER JOINSYS_AttributeDetails AS SYS_AttributeDetails_2 ON SYS_RoomResources.TowardID = SYS_AttributeDetails_2.AttributeDetailsID INNER JOINSYS_AttributeDetails ON SYS_RoomResources.DoorModelID = SYS_AttributeDetails.AttributeDetailsID INNER JOINSYS_AttributeDetails AS SYS_AttributeDetails_3 ON SYS_RoomResources.RoomTypeID = SYS_AttributeDetails_3.AttributeDetailsID INNER JOINSYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorIDwhere SYS_RoomResources.FloorID=@FloorID and SYS_RoomResources.Number=@NumberENDif @Type='dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail'--dgv单击元格,查询相关销售详细信息beginSELECT 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 OperatingTypeFROM PW_SalesOfServiceFloowDetail INNER JOINSYS_Staff ON PW_SalesOfServiceFloowDetail.OperatingPeople = SYS_Staff.StaffID INNER JOINSYS_AttributeDetails ON PW_SalesOfServiceFloowDetail.OperatingType = SYS_AttributeDetails.AttributeDetailsIDwhere PW_SalesOfServiceFloowDetail.RoomResourceID=@RoomResourceIDend第二步:逻辑层(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);}
从界面上可以看到我们这里用到的控件有
| 控件名称 | 说明 |
| 标注(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置业顾问和经办人的数据beginSELECT StaffID, rtrim(StaffName) as StaffNameFROM SYS_Staffendif @Type='KeepAdding_Load_BindingdgvCustom'--根据房源所在的项目来绑定相应的客户beginSELECT ClientID, RTRIM(ClientName) AS ClientName, RTRIM(Gender) AS Gender, HomeBuyerConsultantIDFROM PW_ClientInformationwhere PW_ClientInformation.IncalidOr=0 and PW_ClientInformation.ProjectID=@ProjectIDend第三步:逻辑层(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 绑定dgvCustompublic 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'--新增保留信息beginINSERT 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)endif @Type='btnSave_Click_UpdateSalesStatus'--新增保留后保房源的销售状态更改为保留beginUPDATE SYS_RoomResourcesSET SalesStatusID = 100where SYS_RoomResources.RoomResourcesID=@RoomResourcesIDendif @Type = 'PublicMethod_InsertSalesOfServiceFloowDetail'--新增销售记录beginINSERT INTO PW_SalesOfServiceFloowDetail(BriefNote, RoomResourceID, ReserveID, KeepID, ClientConfessToRaiseID, Confiscated, Signing, OperatingTime, OperatingPeople, OperatingType)VALUES (@BriefNote,@RoomResourceID,@ReserveID,@KeepID,@ClientConfessToRaiseID,@Confiscated,@Signing,@OperatingTime,@OperatingPeople,@OperatingType)endif @Type = 'PublicMethod_InsertClientEventRecord'--新增客户重要操作事件记录beginINSERT 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();//关闭窗体}(这里的添加预定的代码只要是在房源查询调用预定管理的新增界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)
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();}(这里的添加认购的代码只要是在房源查询里边调用认购签约的新增认购界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)
1、UIL窗体传值具体的代码
第一步:查询房源界面里边窗体跳转的具体代码第二步:认购添加界面接收房源查询传过去的值
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();}