我有一个ASP.NET
表单(c#
,MySQL
后端),其中包含三个DropDownList
小部件
<asp:FormView
ID="_fvNoleggio"
runat="server"
DataKeyNames="id"
DataSourceID="_sdsNoleggio"
DefaultMode="Edit" >
<EditItemTemplate>
<asp:Table runat="server">
<asp:TableRow>
<asp:TableCell>
<asp:Label
AssociatedControlID="_ddlAssicurazioneCedente"
ID="_lblAssicurazioneCedente"
runat="server"
Text="Assicurazione cedente" />
</asp:TableCell>
<asp:TableCell>
<asp:DropDownList
ID="_ddlAssicurazioneCedente"
ClientIDMode="Static"
runat="server"
DataSourceID="_sdsAssicurazione"
onchange="javascript: CheckAssicurazione(this);"
DataTextField="nome"
DataValueField="id"
AppendDataBoundItems="true"
SelectedValue='<%#Eval("id_assicurazione_cedente")%>' >
<asp:ListItem Text="Nessuna" Value="" />
</asp:DropDownList>
</asp:TableCell>
<asp:TableCell> </asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Label
AssociatedControlID="_ddlAssicurazioneControparte"
ID="_lblAssicurazioneControparte"
runat="server"
Text="Assicurazione cedente" />
</asp:TableCell>
<asp:TableCell>
<asp:DropDownList
ID="_ddlAssicurazioneControparte"
ClientIDMode="Static"
runat="server"
DataSourceID="_sdsAssicurazione"
onchange="javascript:CheckAssicurazione(this);"
DataTextField="nome"
DataValueField="id"
AppendDataBoundItems="true"
SelectedValue='<%#Eval("id_assicurazione_controparte")%>' >
<asp:ListItem Text="Nessuna" Value="" />
</asp:DropDownList>
</asp:TableCell>
<asp:TableCell> </asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Label
AssociatedControlID="_ddlAssicurazionePagante"
ID="_lblAssicurazionePagante"
runat="server"
Text="Assicurazione cedente" />
</asp:TableCell>
<asp:TableCell>
<asp:DropDownList
ID="_ddlAssicurazionePagante"
ClientIDMode="Static"
runat="server"
DataSourceID="_sdsAssicurazione"
onchange="javascript: CheckAssicurazione(this);"
DataTextField="nome"
DataValueField="id"
AppendDataBoundItems="true"
SelectedValue='<%#Eval("id_assicurazione_pagante")%>' >
<asp:ListItem Text="Nessuna." Value="" />
</asp:DropDownList>
</asp:TableCell>
<asp:TableCell> </asp:TableCell>
</asp:TableRow>
</asp:Table>
</EditItemTemplate>
</asp:FormView>
它们全部通过单个SQLDataSource
元素提供,而SelectedValue
属性绑定到主字段集的匹配字段(提供包含FormView
):
<asp:SqlDataSource
ID="_sdsAssicurazione"
runat="server"
ConnectionString="<%$ ConnectionStrings:mydb %>"
ProviderName="<%$ ConnectionStrings:mydb.ProviderName %>"
SelectCommand=" SELECT
*
FROM
assicurazioni;">
</asp:SqlDataSource>
<asp:SqlDataSource
ID="_sdsNoleggio"
runat="server"
ConnectionString="<%$ ConnectionStrings:mydb %>"
ProviderName="<%$ ConnectionStrings:mydb.ProviderName %>"
SelectCommand=" SELECT
*
FROM
noleggio_veicoli;">
</asp:SqlDataSource>
我需要检查前两个DDL
中的选定值(加上另一个外部值)来设置第三个DDL
选定值。这是我使用的.js代码:
function CheckAssicurazione(widget) {
if (widget == null)
return;
CheckAssicurazionePagante();
$.ajax({
type: "POST",
url: "/Service/WSDataService.asmx/CheckAssicurazione",
data: "{'id':'" + widget.value + "'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data == null)
return;
if (data.d == null)
return;
if (data.d == "True")
alert("Warning!")
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
function CheckAssicurazionePagante()
{
// _tipo_indennizzio is a global value that is set in another section of code and is not null (I debugged it)
if (_tipo_indennizzo == null)
return;
var _assicurazione_controparte = $('#_ddlAssicurazioneControparte option:selected').val();
var _assicurazione_cedente = $('#_ddlAssicurazioneCedente option:selected').val();
var _assicurazione_pagante = null;
if (_tipo_indennizzo == "DIRETTO")
_assicurazione_pagante = _assicurazione_cedente;
else if (_tipo_indennizzo == "TRADIZIONALE")
_assicurazione_pagante = _assicurazione_controparte;
else
return;
var _assicurazione_pagante_selezionata = $('select#_ddlAssicurazionePagante option:selected').val();
if (isBlank(_assicurazione_pagante_selezionata) || (_assicurazione_pagante_selezionata != _assicurazione_pagante))
{
var _result = confirm("warning ?");
// If the user answer 'yes' to the confirm dialog the third DDL should be set to the 'correct' value
if (_result == true) {
$('#_ddlAssicurazionePagante option:selected').val(_assicurazione_pagante);
}
}
}
不幸的是它不起作用......值似乎设置正确(没有抛出异常)但事实上,网页中呈现的DDL没有更新。
我哪里错了?我正在使用jquery 2.1.3
和jquery-ui 1.11.2
:
<script type="text/javascript" src="../Scripts/jquery-2.1.3.js"></script>
<script type="text/javascript" src="../Scripts/jquery-ui-1.11.2.js"></script>
日Thnx
答案 0 :(得分:1)
在当前代码中,您将获取并设置每个DropDownList的所选项的值。您应该获取并设置DropDownList本身的值:
var _assicurazione_controparte = $('#_ddlAssicurazioneControparte').val();
var _assicurazione_cedente = $('#_ddlAssicurazioneCedente').val();
...
$('#_ddlAssicurazionePagante').val(_assicurazione_pagante);