如何解决在 asp.net 中级联数据绑定 <ajaxtoolkit:combobox> 和 <asp:dropdownlist>
我有一个 asp.net
搜索表单,其中包含一个 ajaxToolkit ComboBox
和一个标准的 asp DropDownList
。两个控件都绑定到两个单独的 sqlDatasource
组件。
像这样:
<ajaxToolkit:ComboBox
ID="cbConvenzionato"
runat="server"
AutoCompleteMode="SuggestAppend"
DropDownStyle="DropDownList"
DataSourceID="sdsConvenzionati"
DataTextField="nome"
DataValueField="id"
AutopostBack="true"
OnSelectedindexChanged="cbConvenzionato_SelectedindexChanged" />
<asp:DropDownList
ID="ddlVeicoli"
DataSourceID="sdsveicoli"
DataTextField="targa"
DataValueField="id"
runat="server"
AutopostBack="true"
OnSelectedindexChanged="ddlVeicoli_SelectedindexChanged"
AppendDataBoundItems="true">
<asp:ListItem Text="TUTTI" Value="" Selected="True" />
</asp:DropDownList>
<asp:sqlDataSource
ID="sdsConvenzionati"
runat="server"
ConnectionString="<%$ ConnectionStrings:db %>"
ProviderName="<%$ ConnectionStrings:db.ProviderName %>"
SelectCommand="
SELECT
id,nome
FROM
anag_convenzionati
ORDER BY nome;" />
<asp:sqlDataSource
ID="sdsveicoli"
runat="server"
EnableCaching="false"
CancelSelectOnNullParameter="false"
ConnectionString="<%$ ConnectionStrings:db %>"
ProviderName="<%$ ConnectionStrings:db.ProviderName %>"
SelectCommand="
SELECT
id,targa
FROM
veicoli_contratti
WHERE
((@id_convenzionato IS NULL) OR (id_convenzionato = @id_convenzionato))
ORDER BY targa;">
<SelectParameters>
<asp:ControlParameter
Name="id_convenzionato"
ControlID="cbConvenzionato"
PropertyName="SelectedValue"
Direction="Input"
ConvertEmptyStringToNull="true"
DbType="Int32"
DefaultValue="" />
</SelectParameters>
</asp:sqlDataSource>
还有第三个 sqldatasource
(sdsNoleggi
) 提供 gridview
,但现在这不是问题。
protected void cbConvenzionato_SelectedindexChanged(object sender,EventArgs e)
{
sdsveicoli.Select(DataSourceSelectArguments.Empty);
Search();
}
protected void ddlVeicoli_SelectedindexChanged(object sender,EventArgs e)
{
Search();
}
private void Search()
{
sdsNoleggi.Select(DataSourceSelectArguments.Empty);
}
我认为我应该在 ddlVeicoli
中选择一项后过滤 cbConvenzionato
项...但它不起作用...为什么?
如果我在调试中查看 sdsveicoli
SelectParameters
我可以看到 id_convenzionato
被正确设置为选定的值(id 来自 cbConvenzionato
)我也打赌 {{1 }} 数据集将被正确更新为新值,因为我之前做过很多次。那么为什么绑定控制不是呢?我还尝试在 sdsNoleggi
调用后强制执行 ddlVeicoli.DataBind()
......但这没有效果。
解决方法
我是这样修复的:
protected void cbConvenzionato_SelectedIndexChanged(object sender,EventArgs e)
{
ddlVeicoli.DataSource = null;
sdsVeicoli.Select(DataSourceSelectArguments.Empty);
ddlVeicoli.DataSource = sdsVeicoli;
ddlVeicoli.DataBind();
Search();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。