У меня есть ASP.NET
форма (c#
, MySQL
бэкенд), который показывает, среди других трех DropDownList
виджетовJQuery изменение SelectedValue в DataBound ASP.NET 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
свойства обязательно соответствие поля мастера FIELDSET (включая подачу 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
Я думаю, что я тоже пробовал это без успеха. в любом случае, я попробую еще раз ... – weirdgyn