0

我有这个文本框,它使用 jQuery 触发 ajax 请求:

<asp:TextBox ID="postcodeTextBox" runat="server" Text='<%# Bind("POSTAL_ZIP_CODE") %>'>

$(document).ready(PageLoad);

function PageLoad() {
    $(container + 'parentProjectTextBox').change(GetProjectName);
}

function GetProjectName() {
    var projectNumber = $(this).val();
    if (projectNumber == '') return;
    $(container + 'parentProjectPanel').block({ message: '<img src="../Resources/RadControls/Ajax/Skins/Default/loading7.gif" />' });
    $.ajax({
        type: 'POST',
        url: projectMasterWebServicesUrl + 'GetProjectName',
        data: "{'projectNumber':'" + projectNumber + "'}",
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: GetProjectNameOnSuccess,
        error: GetProjectNameOnError
    });
}

这个 ajax 请求获取一个列表来填充这个下拉列表:

                        <asp:DropDownList ID="cityDropDownList" runat="server" OnDataBound="cityDropDownList_DataBound">
                            <asp:ListItem Text="...Select..." Value="0">
                            </asp:ListItem>
                        </asp:DropDownList>

一切正常。我遇到的唯一问题是,当我更新我的 formView 以保存该记录时,我看不到设置为该下拉列表的值。当我在客户端填充这个下拉列表时,我假设 ASP.NET 失去了对它的跟踪......

有没有人有任何见解?

显然,当我打开/关闭该页面的 EnableEventValidation 属性时,有时会得到正确的值.....

谢谢 !

4

2 回答 2

1

您应该创建一个隐藏字段来存储该值。在您的 Javascript 中更新该 HiddenField,然后在服务器端读取它。此外,如果您有 EventValidation=true 并且您更改下拉列表中的项目,您将获得众所周知的异常。

于 2008-12-18T03:02:04.220 回答
0

这可能不是问题...但是您是否在 Page_Load 中检查 Page.IsPostBack?

我犯过这样的错误太多次了。

如果您正在从 Page_Load 加载该下拉控件,并且您没有检查是否 (!Page.IsPostback) 您将重新加载该控件。然后,当您从下拉列表中获取值时...该值消失了,因为您重新加载了下拉列表。

于 2008-12-18T04:12:12.797 回答