ASP.NET中如何将ComboBox与Web Service绑定并加载数据?
问题代码存在的错误
- 变量名引用错误:调用Web Service返回的数据集命名为
ds2,但循环遍历表的时候用的是未定义的ds1,会触发空引用异常 - 缺少
IsPostBack判断:每次页面回发都会重新执行绑定逻辑,会导致下拉项重复、选中值丢失等问题 - 绑定逻辑位置错误:
DataTextField、DataValueField设置、DataBind()方法调用、空项插入的逻辑被放在行遍历循环内,每遍历一行就会重复执行一次绑定,导致严重的性能问题和重复项问题 - 入参未定义:代码中仅定义了
firstParam,调用Web Service时传入的secondParam、thirdParam未赋值,运行会直接报错 - GridView绑定不完整:仅给
GridView1指定了DataSource,未调用DataBind()方法,GridView无法正常展示数据
修正后代码
protected void Page_Load(object sender, EventArgs e) { // 仅首次加载页面时执行绑定逻辑,回发时不重复执行 if (!IsPostBack) { // 补充三个参数的赋值逻辑,可根据实际需求修改 string firstParam = "1"; string secondParam = "填写第二个参数实际值"; string thirdParam = "填写第三个参数实际值"; // 调用Web Service获取数据集 DataSet ds2 = ws1.Automation_H022_MamooriyatSaati_View(firstParam, secondParam, thirdParam); // 绑定GridView this.GridView1.DataSource = ds2; this.GridView1.DataBind(); // 绑定ComboBox,无需循环遍历行,直接指定数据源即可 if (ds2 != null && ds2.Tables.Count > 0) { // 如果Web Service返回的目标数据不是第一张表,可修改Tables索引值 cmbox.DataSource = ds2.Tables[0]; cmbox.DataTextField = "Tp_Place"; cmbox.DataValueField = "Lg_Personality"; cmbox.DataBind(); // 插入空选项放在绑定完成之后执行一次即可 cmbox.Items.Insert(0, new ListItem("", "1")); } } }
内容的提问来源于stack exchange,提问作者farzaneh br
相关产品推荐
相关产品推荐

