积极答复者
如何在表中给新合同增加相应的的项?

问题
-
问题是:首先介绍一下表。有2个表:1.PropertyTable(资产表)、2.ContractTable(合同表)。以前两个表中都有City(所在城市)、Road(所在路段)、Address(门牌号),ContractTable中的City、Road、Address的外键是PropertyTable中的City、Road、Address(ContractTable中的City、Road、Address来源于PropertyTable)。--以前我是通过where ContractTable.City+ContractTable.Road+ContractTable.Address=PropertyTable.City+PropertyTable.Road+PropertyTable.Address的条件来联系两个表的,但这样在实际操作中比较麻烦。所以,我给PropertyTable添加了一个PropertyTableID,并把这个PropertyTableID设置为主键。然后我又给ContractTable添加了一个新的列ContractTableID,通过where ContractTable.City+ContractTable.Road+ContractTable.Address=PropertyTable.City+PropertyTable.Road+PropertyTable.Address的条件把PropertyTableID的值赋给ContractTableID,以后就可以用where ContractTable.ContractTableID=PropertyTable.PropertyTableID的条件来联系两个表了。--现在的问题是,我使用前台程序打开ContractTableAdd.aspx,添加新合同,怎么样可以在选择了City、Road、Address后,在点击‘确定’时自动在ContractTable中给添加的新合同增加相应的ContractTableID呢???--附带说一下,我用的是LinqToSQL!--下面是前台和后台程序。我觉得应该是在后台添加吧!?请各位不吝解答!!!谢谢!======================部分前台代码=======================
<td> <asp:SqlDataSource ID="SqlDataSource_Road" runat="server" ConnectionString="<%$ ConnectionStrings:长铁物业公司资产数据库ConnectionString %>" SelectCommand="SELECT DISTINCT [Road] FROM [PropertyTable] WHERE ([City] = @City) and propertystate='1'"> <SelectParameters> <asp:ControlParameter ControlID="DropDownList_City" Name="City" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> </td> <td> <asp:SqlDataSource ID="SqlDataSource_Address" runat="server" ConnectionString="<%$ ConnectionStrings:长铁物业公司资产数据库ConnectionString %>" SelectCommand="SELECT [Address] FROM [PropertyTable] WHERE (([City] = @City) AND ([Road] = @Road)) and propertystate='1'"> <SelectParameters> <asp:ControlParameter ControlID="DropDownList_City" Name="City" PropertyName="SelectedValue" Type="String" /> <asp:ControlParameter ControlID="DropDownList_Road" Name="Road" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> </td>
========================后台代码======================using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; public partial class ContractTable_ContractAdd : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button_Submit_Click(object sender, EventArgs e) { if (Page.IsValid) { DataClassesDataContext db = new DataClassesDataContext(); ContractTable myct = new ContractTable(); myct.ContractNumber = TextBox_ContractNumber.Text.ToString();//合同编号 myct.ContractTypeDetail = TextBox_ContractTypeDetail.Text.ToString();//合同种类(详细) myct.ContractType = DropDownList_ContractType.SelectedItem.Value.ToString();//合同类型 myct.SumbitNumber = TextBox_SubmitNumber.Text.ToString();//送审编号 myct.SubjectMatter = TextBox_SubjectMatter.Text.ToString();//标的物 //City、Road、Address为必填项 myct.City = DropDownList_City.SelectedItem.Value.ToString(); myct.Road = DropDownList_Road.SelectedItem.Value.ToString(); myct.Address = DropDownList_Address.SelectedItem.Value.ToString(); myct.OppositeSide = TextBox_OppositeSide.Text.ToString();//合同相对方 myct.ManageProject = TextBox_ManageProject.Text.ToString();//经营项目 if (TextBox_LeaseDateSign.Text!="")//合同签订日 myct.LeaseDateSign = Convert .ToDateTime(TextBox_LeaseDateSign.Text); if (TextBox_LeaseDtaeFrom.Text!="")//合同起始日 myct.LeaseDateFrom = Convert.ToDateTime(TextBox_LeaseDtaeFrom.Text); if (TextBox_LeaseDateTo.Text!="")//合同终止日 myct.LeaseDateTo = Convert.ToDateTime(TextBox_LeaseDateTo.Text); myct.PerformState = TextBox_PerformState.Text.ToString();//合同状态 //安全协议 if (RadioButton_SafeContractYes.Checked ) myct .SafetyContract=true; if (RadioButton_SafetyContractNo.Checked ) myct .SafetyContract =false ; //计生协议 if (RadioButton_FamilyPlanningContractYes.Checked) myct.FamilyPlanningContract = true; if (RadioButton_FamilyPlanningContractNo.Checked) myct .FamilyPlanningContract=false; //食品安全协议 if (RadioButton_FoodContractYes.Checked) myct.FoodContract = true; if (RadioButton_FoodContractNO.Checked) myct.FoodContract = false; //添加了部门和人!!! myct.ContractCompany = TextBox_ContractCompany.Text.ToString();//合同签订分公司 myct.ContractResponsible = TextBox_ContractResponsible.Text.ToString();//合同负责人 myct.ContractManager = TextBox_ContractManager.Text.ToString();//合同管理员 myct.ContractChange = TextBox_ContractChange.Text.ToString();//合同变更 //租金相关 if (TextBox_ReferencePrice.Text!="")//周边参考价 myct.ReferencePrice = decimal .Parse ( TextBox_ReferencePrice.Text); myct.ReferencePriceRemarks = TextBox_ReferencePriceRemarks.Text.ToString();//参考价备注 myct.ContractRemarks = TextBox_ContractRemarks.Text.ToString();//合同备注 myct.TypeOfPayment = TextBox_TypeOfPayment.Text.ToString();//付款方式 if (TextBox_MonthRent.Text != "")//理论月租金 myct.MonthRent = decimal.Parse(TextBox_MonthRent.Text); //if (TextBox_RealityRent.Text!="")//实收月租金 // myct.RealityRent = decimal.Parse(TextBox_RealityRent.Text); //if (TextBox_RealityYearRent.Text != "")//实收年租金 // myct.RealityYearRent = decimal.Parse(TextBox_RealityYearRent.Text); if (TextBox_YearRent.Text != "")//理论年租金 myct.YearRent = decimal.Parse(TextBox_YearRent .Text ); if (TextBox_SumRent.Text!="")//理论租金总金额 myct.SumRent = decimal.Parse(TextBox_SumRent.Text ); if (TextBox_LeaseAssureMoney.Text!="")//租赁保证金 myct.LeaseAssureMoney = decimal.Parse(TextBox_LeaseAssureMoney .Text ); if (TextBox_PenalSum.Text != "")//违约金 myct.PenalSum = decimal.Parse(TextBox_PenalSum .Text .ToString ()); if (TextBox_PropertyManageMoney.Text != "")//物业管理费 myct.PropertyManageMoney = decimal.Parse(TextBox_PropertyManageMoney.Text); if (TextBox_RateOfRise.Text!="")//递增率 myct.RateOfRise = decimal.Parse(TextBox_RateOfRise .Text); db.ContractTable.InsertOnSubmit(myct); db.SubmitChanges(); TextBox_ContractNumber.Focus(); //清空 TextBox_OppositeSide.Text = ""; TextBox_ManageProject.Text = ""; //TextBox_LeaseDateSign.Text = ""; } } protected void CustomValidator_ContractNumber_ServerValidate(object source, ServerValidateEventArgs args) { DataClassesDataContext db = new DataClassesDataContext(); ContractTable mypt; args.IsValid = false; try//多个参数同时判定的写法!!! { mypt = db.ContractTable.Where(c => c.ContractNumber ==TextBox_ContractNumber.Text).First(); } catch { args.IsValid = true; } } }
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
- 已编辑 linjiangxian11 2011年12月29日 6:00
答案
-
PropertyTable pt = new PropertyTable(); 这一句不要么?
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
是的,不要因为是由DataClassesDataContext db = new DataClassesDataContext();
去PropertyTable查询出PropertyTableID====================
刚刚想到,有可能使用者所选取的City 、Road、Address刚好不在PropertyTable里
所以要做个防呆写法
DataClassesDataContext db = new DataClassesDataContext(); ContractTable myct = new ContractTable(); //City、Road、Address为必填项 myct.City = DropDownList_City.SelectedItem.Value.ToString(); myct.Road = DropDownList_Road.SelectedItem.Value.ToString(); myct.Address = DropDownList_Address.SelectedItem.Value.ToString(); //由这三个讯息去PropertyTable(资产表)找出PropertyTableID PropertyTable pt = db.PropertyTable.Where(c => c.City == DropDownList_City.SelectedItem.Value && c.Road == DropDownList_Road.SelectedItem.Value && c.Address == DropDownList_Address.SelectedItem.Value).FirstOrDefault(); if (pt.PropertyTableID==null) { ClientScript.RegisterStartupScript(typeof(Page), "无此地址", "alert('无此地址');", true); return;//不往下执行 } myct.ContractTableID = pt.PropertyTableID;
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
- 已编辑 Shadow .Net 2011年12月29日 6:40
- 已建议为答案 ThankfulHeart 2011年12月29日 6:41
- 已标记为答案 Song TianModerator 2012年1月4日 10:55
全部回复
-
问题是:首先介绍一下表。有2个表:1.PropertyTable(资产表)、2.ContractTable(合同表)。以前两个表中都有City(所在城市)、Road(所在路段)、Address(门牌号),ContractTable中的City、Road、Address的外键是PropertyTable中的City、Road、Address(ContractTable中的City、Road、Address来源于PropertyTable)。--以前我是通过where ContractTable.City+ContractTable.Road+ContractTable.Address=PropertyTable.City+PropertyTable.Road+PropertyTable.Address的条件来联系两个表的,但这样在实际操作中比较麻烦。所以,我给PropertyTable添加了一个PropertyTableID,并把这个PropertyTableID设置为主键。然后我又给ContractTable添加了一个新的列ContractTableID,通过where ContractTable.City+ContractTable.Road+ContractTable.Address=PropertyTable.City+PropertyTable.Road+PropertyTable.Address的条件把PropertyTableID的值赋给ContractTableID,以后就可以用where ContractTable.ContractTableID=PropertyTable.PropertyTableID的条件来联系两个表了。--现在的问题是,我使用前台程序打开ContractTableAdd.aspx,添加新合同,怎么样可以在选择了City、Road、Address后,在点击‘确定’时自动在ContractTable中给添加的新合同增加相应的ContractTableID呢???--下面是前台和后台程序。我觉得应该是在后台添加吧!?请各位不吝解答!!!谢谢!
给您一个思路:
//City、Road、Address为必填项
DropDownList_City.SelectedItem.Value.ToString();
DropDownList_Road.SelectedItem.Value.ToString();
DropDownList_Address.SelectedItem.Value.ToString();
由这三个讯息去PropertyTable(资产表)找出PropertyTableID再把PropertyTableID赋值给ContractTableID就可以了
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
-
//City、Road、Address为必填项 这个没错!
关键是我怎么写“由这三个讯息去PropertyTable(资产表)找出PropertyTableID”的代码。
附带说一下,我用的是LinqToSQL!
3Q!
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!- 已编辑 linjiangxian11 2011年12月29日 6:03
-
//City、Road、Address为必填项 这个没错!
关键是我怎么写“由这三个讯息去PropertyTable(资产表)找出PropertyTableID”的代码。
附带说一下,我用的是LinqToSQL
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
Sample Code:DataClassesDataContext db = new DataClassesDataContext(); ContractTable myct = new ContractTable(); //City、Road、Address为必填项 myct.City = DropDownList_City.SelectedItem.Value.ToString(); myct.Road = DropDownList_Road.SelectedItem.Value.ToString(); myct.Address = DropDownList_Address.SelectedItem.Value.ToString(); //由这三个讯息去PropertyTable(资产表)找出PropertyTableID PropertyTable pt = db.PropertyTable.Where(c => c.City == DropDownList_City.SelectedItem.Value && c.Road == DropDownList_Road.SelectedItem.Value && c.Address == DropDownList_Address.SelectedItem.Value).FirstOrDefault(); myct.ContractTableID = pt.PropertyTableID;
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
- 已编辑 Shadow .Net 2011年12月29日 6:17
- 已建议为答案 ThankfulHeart 2011年12月29日 6:41
-
Sample Code:
DataClassesDataContext db = new DataClassesDataContext(); ContractTable myct = new ContractTable(); //City、Road、Address为必填项 myct.City = DropDownList_City.SelectedItem.Value.ToString(); myct.Road = DropDownList_Road.SelectedItem.Value.ToString(); myct.Address = DropDownList_Address.SelectedItem.Value.ToString(); //由这三个讯息去PropertyTable(资产表)找出PropertyTableID PropertyTable pt = db.PropertyTable.Where(c => c.City == DropDownList_City.SelectedItem.Value && c.Road == DropDownList_Road.SelectedItem.Value && c.Address == DropDownList_Address.SelectedItem.Value).FirstOrDefault(); myct.ContractTableID = pt.PropertyTableID;
PropertyTable pt = new PropertyTable(); 这一句不要么?
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把! -
PropertyTable pt = new PropertyTable(); 这一句不要么?
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
是的,不要因为是由DataClassesDataContext db = new DataClassesDataContext();
去PropertyTable查询出PropertyTableID====================
刚刚想到,有可能使用者所选取的City 、Road、Address刚好不在PropertyTable里
所以要做个防呆写法
DataClassesDataContext db = new DataClassesDataContext(); ContractTable myct = new ContractTable(); //City、Road、Address为必填项 myct.City = DropDownList_City.SelectedItem.Value.ToString(); myct.Road = DropDownList_Road.SelectedItem.Value.ToString(); myct.Address = DropDownList_Address.SelectedItem.Value.ToString(); //由这三个讯息去PropertyTable(资产表)找出PropertyTableID PropertyTable pt = db.PropertyTable.Where(c => c.City == DropDownList_City.SelectedItem.Value && c.Road == DropDownList_Road.SelectedItem.Value && c.Address == DropDownList_Address.SelectedItem.Value).FirstOrDefault(); if (pt.PropertyTableID==null) { ClientScript.RegisterStartupScript(typeof(Page), "无此地址", "alert('无此地址');", true); return;//不往下执行 } myct.ContractTableID = pt.PropertyTableID;
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
- 已编辑 Shadow .Net 2011年12月29日 6:40
- 已建议为答案 ThankfulHeart 2011年12月29日 6:41
- 已标记为答案 Song TianModerator 2012年1月4日 10:55