SMILET
2024-01-18 16:19:06
我定義了一個(gè) ASP.NET 表單,其中包含以下表單元素: a TextBox、 anHiddenField和 a ,DropDownList定義如下:<asp:TextBox ID="_txtData" runat="server" ClientIDMode="Static" /><asp:HiddenField ID="_hdnData" runat="server" ClientIDMode="Static" Value="" /><asp:DropDownList ID="_ddlData" runat="server" DataSourceID="_sdsData" DataTextField="data" DataValueField="id" AppendDataBoundItems="true" AutoPostBack="true" > <asp:ListItem Text="TUTTI" Value="" Selected="True" /></asp:DropDownList>_ddlData由以這種方式定義的數(shù)據(jù)源提供:<asp:SqlDataSource ID="_sdsData" runat="server" ConnectionString="<%$ ConnectionStrings:db %>" ProviderName="<%$ ConnectionStrings:db.ProviderName %>" SelectCommand=" SELECT id, data FROM table_data WHERE (@id IS NULL) OR (id = @id) ORDER BY targa"> <SelectParameters> <asp:ControlParameter ControlID="_hdnData" PropertyName="Value" Direction="Input" ConvertEmptyStringToNull="true" DbType="Int32" DefaultValue="" Name="id" /> </SelectParameters></asp:SqlDataSource> _hdnData并_txtData通過 javascript/JQuery 以這種方式提供:[原代碼]var _hdnData = null;var _txtData = null;$(function () { _hdnData = $("input[id$='_hdnData']"); _txtData = $("input[id$='_txtData']"); GetData(_txtData , _hdnData );});function GetData(source_widget, dest_widget) { $.ajax({ type: "POST", url: "/Service/WSDataService.asmx/GetData", dataType: "json", data: "{}", contentType: "application/json; charset=utf-8", success: function (data) { var datafromServer = data.d.split("<br />");當(dāng) JQuery 的 select 事件autocomplete發(fā)生時(shí),表單被提交,一旦重新加載,我注意到兩個(gè)主要問題:_txtData設(shè)置為發(fā)生選擇事件時(shí)用戶輸入的部分值(即不是菜單上選擇/可見的實(shí)際值autocomplete)_ddlData選擇事件之前存在的值將與來自其數(shù)據(jù)源的新數(shù)據(jù)合并。順便說一句,我目前不想SQLDataSource用更新的或更新的范例(如 Microsoft 實(shí)體框架)更改或數(shù)據(jù)綁定組件。
1 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
你有一個(gè)時(shí)間問題。
您將提交該表單作為select
活動(dòng)的一部分。事件發(fā)生后,所選值將由 jQuery UI 寫入表單字段select
,但此代碼永遠(yuǎn)不會(huì)運(yùn)行。立即重新加載.closest("form").submit()
頁面。此時(shí),自動(dòng)完成字段仍然只包含用戶輸入的內(nèi)容。
對(duì)此的快速而骯臟的解決方案是在短暫延遲后發(fā)送表單,以便讓其他事件有機(jī)會(huì)完成。
// ...?
select: function (event, ui) {
? ? var _data = ui.item,
? ? ? ? _value,
? ? ? ? $form = $(this).closest("form");
? ? // calculate _value ...
? ? $("input[id$='_hdnData ']").val(_value);
? ? setTimeout(function () { $form.submit(); }, 50);
}
添加回答
舉報(bào)
0/150
提交
取消