EditItemTemplate中AJAX CascadingDropDown和DropDownList SelectedValue的问题

我在FormView的EditItemTemplate中遇到问题。

当我在InsertItemTemplate中使用这样的代码时,一切正常:

<asp:DropDownList ID="Lic_PosiadaczLicencjiIDDropDownList" runat="server" SelectedValue='' />   

但是当我在EditItemTemplate中使用完全相同的代码时,我收到一个错误,即SelectedValue是错误的,因为它不存在于元素列表中。 我认为问题是DropDownList在服务填充之前检查了值。 当我运行调试器时,错误发生在服务方法中的断点之前。

如何解决这个问题呢?

我发现CCD非常笨重且充满了记录不足的解决方法但是这里是你如何做一些简单的事情,就像填充ddl时选择一个值一样。 请注意,未在DDL上设置所选值,并且将其传递到完成选择的Web服务。

              

代码背后:

 protected void yourDataSource_Updating(object sender, SqlDataSourceCommandEventArgs e) { e.Command.Parameters["@newvalue"].Value = ((DropDownList)fv1.FindControl("Lic_PosiadaczLicencjiIDDropDownList")).SelectedValue; } 

在您从中获取数据的Web服务中,需要将上下文密钥添加到签名中,如同区分大小写一样。 然后检查所选值的返回值并设置selected = true。 如果您想要选择的值而不是选定的文本,请检查x.value而不是x.name。

 [WebMethod] public CascadingDropDownNameValue[] GetKontrahenci(string knownCategoryValues, string category, string contextKey) { CascadingDropDownNameValue[] results = getdata(); CascadingDropDownNameValue selectedVal = (from x in results where x.name == contextKey select x).FirstOrDefault(); if (selectedVal != null) selectedVal.isDefaultValue = true; return results; } 

希望这可以帮助!