我有一個GridView應用程序的GridView繼承。網格視圖列出了許多審計員和分配給他們的成本。頁腳模板中有空白文本框,允許用戶向網格中添加新條目。第一列包含審計人員的姓名,其中使用jQuery UI自動完成來幫助用戶添加審計員姓名。jQuery UI自動完成 - ASP GridView
我遇到的問題是自動完成對於第一行的添加完美。但是如果用戶希望在第一個記錄之後添加多個記錄,那麼自動完成功能將不起作用。
作畫它是如何工作的全貌,自動完成數據裝載到一個隱藏字段
private void BindAuditorAutoComplete()
{
var data = RetrievalProcedures.GetAuditors();
hdAuditorData.Value = JsonObjectSerializer.ParseAuditorAutoComplete(data);
}
這裏是GridView的相關列 - 注意兩個隱藏字段,以及,第一用於數據庫記錄ID(在編輯記錄的情況下),第二個是自動填充中所選審計員的ID值。
<asp:TemplateField HeaderText="Auditor Name">
<HeaderStyle Width="315" />
<ItemStyle Width="315" />
<ItemTemplate>
<asp:Label ID="lblExtraAuditorName" runat="server" Text='<%# Bind("ExtraAuditorName")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="lblExtraAuditorName" runat="server" Text='<%# Bind("ExtraAuditorName")%>'></asp:Label>
<uc:HiddenField2 ID="txtExtraAdditionalAuditorId" runat="server" Value='<%# Bind("ExtraAdditionalAuditorId")%>' />
<uc:HiddenField2 ID="txtExtraAuditorId" runat="server" Value='<%# Bind("ExtraAuditorId")%>' />
</EditItemTemplate>
<FooterTemplate>
<uc:HiddenField2 ID="txtExtraAdditionalAuditorId" runat="server" Value='<%# Bind("ExtraAdditionalAuditorId")%>' />
<uc:HiddenField2 ID="txtExtraAuditorId" runat="server" />
<asp:TextBox ID="txtExtraAuditorName" class="dummyAuditorAutoComplete" runat="server" Style="width: 305px;"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
,這裏是加載自動完成代碼:
function LoadAuditorExtraCostsAutoComplete() {
$('.dummyAuditorAutoComplete').autocomplete({
source: GetAuditorData(),
select: function (event, ui) {
PopulateAdditionalCostsAuditorData(ui);
return false;
},
focus: function (event, ui) {
PopulateAdditionalCostsAuditorData(ui);
return false;
},
minLength: 1
});
}
的GetAuditorData()只是讀取隱藏字段的值:
function GetAuditorData() {
var auditors = eval($("#<%=hdAuditorData.ClientID%>").val());
return auditors;
}
上的選擇和焦點事件時,以下功能運行:
function PopulateAdditionalCostsAuditorData(ui) {
$("#cphDetails_AdditionalCostsGrid_txtExtraAuditorName").val(ui.item.Name);
$("#cphDetails_AdditionalCostsGrid_txtExtraAuditorId").val(ui.item.Id);
}
注意:我知道我可能應該在引用這兩個字段時使用服務器標記,但是Visual Studio給了我錯誤,建議txtExtraAuditorName/txtExtraAuditorId在當前上下文中不存在。這個問題可能與此有關,但我不知道如何解決它。
是否有人能夠協助,以便用戶可以在添加一條記錄後再次使用自動完成功能?提前致謝!