private void cmbInsuranceDuration_SelectedIndexChanged(object sender, EventArgs e) { EagleWebService.t_Product product = (EagleWebService.t_Product)(cmbInsuranceType.Items[cmbInsuranceType.SelectedIndex]); if (string.IsNullOrEmpty(product.PrintingConfig)) { MessageBox.Show("未找到该产品的打印格式信息,请连续管理员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { printHandle = new PrintXmlHandle(PRINT_TYPE.INSURANCE, product.PrintingConfig, product.productID); printHandle.ToForm(this); string productString = product.FilterComment; string[] productIdAndDuration = productString.Split('|'); int productDuration = int.Parse(productIdAndDuration[1]); cmbDuration.Items.Clear(); for (int i = 1; i <= productDuration; i++) { cmbDuration.Items.Add(i + "天"); } cmbDuration.SelectedItem = productDuration + "天"; } catch (Exception ee) { MessageBox.Show(ee.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// 取产品列表 /// </summary> /// <param name="iaCode">默认选中的产品编号</param> void GetProductList(string iaCode) { try { EagleWebService.wsInsurrance ws = new EagleWebService.wsInsurrance(); EagleWebService.ProductListResponseEntity ret; ret = ws.GetProductList(Options.GlobalVar.IAUsername, Options.GlobalVar.IAPassword); if (string.IsNullOrEmpty(ret.Trace.ErrorMsg)) { if (ret.ProductList.Length < 1) { return; } this.cmbInsuranceType.DisplayMember = "productName"; this.cmbInsuranceType.ValueMember = "FilterComment";//借用该字段 for (int i = 0; i < ret.ProductList.Length; i++) { EagleWebService.t_Product product = ret.ProductList[i]; product.FilterComment = product.productID + "|" + product.productDuration;//借用该string型字段,否则无法通过编译. this.cmbInsuranceType.Items.Add(product); //if (product.productID.ToString() == iaCode) //this.cmbInsuranceType.SelectedIndex = i;//有bug!因为设置了cmbInsuranceType的Sorted属性,每次Add时会重新排列,而SelectedIndex却不变,导致最终显示错位! //cmbInsuranceType.SelectedItem = product;//依然bug!因为该操作也间接设置了SelectedIndex,情况同上,导致显示错位! //解决方法:不要在该数据填充循环中执行初始化操作,移到循环外,即下面的foreach循环 } foreach (var item in cmbInsuranceType.Items) { EagleWebService.t_Product product = (EagleWebService.t_Product)item; if (product.productID.ToString() == iaCode) { cmbInsuranceType.SelectedItem = product; break; } } if (this.cmbInsuranceType.SelectedIndex < 0) { this.cmbInsuranceType.SelectedIndex = 0; } } else { MessageBox.Show("获取产品列表失败:" + ret.Trace.ErrorMsg + System.Environment.NewLine + ret.Trace.Detail); } } catch (Exception e) { EagleString.EagleFileIO.LogWrite(e.ToString()); } }