我正在尝试将两个DropDownList( ddlCountry和ddlCity )连接在一起。我希望当用户更改Country时,ddlCity会更新。
为此,我创建了两个列表:
·国家/地区(ID,标题)
·城市(ID,标题,国家/地区) [国家/地区是查询字段]
然后我创建了一个ASPX页面,其中2个DropDownList通过2个SPDataSource(dsCountry和dsCity)连接到Country和City。
当我加载页面时,City DropDownList相应地填充到Country DropDownList,但是当我更改Country时,没有任何反应,ddlCity总是显示null 这是我的代码:
<SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="<Query><OrderBy><FieldRef Name='Title' /></OrderBy></Query>" id="dsCountry">
<SelectParameters>
<asp:Parameter Name="ListName" DefaultValue="Country"/>
</SelectParameters>
</SharePoint:SPDataSource>
<p>Country:
<asp:DropDownList runat="server" id="ddlCountry" DataValueField="Title" DataTextField="Title" DataSourceID="dsCountry" AutoPostBack="True" />
</p>
<SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="<Query><Where><Eq><FieldRef Name="Country" /><Value Type="Lookup">{country}</Value></Eq></Where></Query>" id="dsCity">
<SelectParameters>
<asp:parameter DefaultValue="City" Name="ListName"></asp:parameter>
<asp:controlparameter name="country" controlid="ddlCountry" propertyname="SelectedValue"/>
</SelectParameters>
</SharePoint:SPDataSource>
<p>City:
<asp:DropDownList runat="server" id="ddlCity" DataValueField="Title" DataTextField="Title" DataSourceID="dsCity" />
</p>
请注意:
·在ddlCountry中AutoPostBack = True
·在dsCity中,在CAML查询中有一个名为“country”的参数,通过ControlParameter连接到ddlCountry
我不明白为什么我的过滤在我改变国家时不起作用...我可以看到页面重新加载,但没有任何反应......任何建议?