C# 按下enter键时,如何在AjaxControlToolkit组合框中获取用户输入的值?

C# 按下enter键时,如何在AjaxControlToolkit组合框中获取用户输入的值?,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,问题是: 按enter键时,AjaxControlToolkit组合框的.Text属性中缺少用户输入的值。另外,“on change”事件也没有被调用,但我没有使用回发,所以我不在乎 例如: private void BuildFileListDetails(NHibernateDataProvider _providerM) { int resultsPage = Convert.ToInt32(ddlNavPageNumber.Text); const int R

问题是:

按enter键时,AjaxControlToolkit组合框的.Text属性中缺少用户输入的值。另外,“on change”事件也没有被调用,但我没有使用回发,所以我不在乎

例如:

private void BuildFileListDetails(NHibernateDataProvider _providerM)  
{  
    int resultsPage = Convert.ToInt32(ddlNavPageNumber.Text);  
    const int RESULTS_PAGE_SIZE = 100;  

    // The cbFileName.Text equals "" Not what user entered  
    string searchFileName= cbFileName.Text;  

    var xrfFiles = _providerM.GetXrfFiles(searchFileName, resultsPage, RESULTS_PAGE_SIZE);

    gvXrfFileList.DataSource = xrfFiles;

    gvXrfFileList.DataBind();

}
我的解决方案:

我需要访问嵌入TextBox控件的.Text的AjaxToolkit组合框来访问用户输入的值

private void BuildFileListDetails(NHibernateDataProvider _providerM)
{

    int resultsPage = Convert.ToInt32(ddlNavPageNumber.Text); 
    const int RESULTS_PAGE_SIZE = 100;
    string searchFileName;

    //The Solution: Access the AjaxToolkit "ComboBox" imbedded TextBox control's .Text to access the value entered by user.
    TextBox textBox = cbFileName.FindControl("TextBox") as TextBox;
    if (textBox != null)
    {
       searchFileName = textBox.Text; //textBox.Text = "User Entered Value"
    }

    var xrfFiles = _providerM.GetXrfFiles(searchFileName, resultsPage, RESULTS_PAGE_SIZE);
    gvXrfFileList.DataSource = xrfFiles;
    gvXrfFileList.DataBind();
}

我最终创建了一个实用方法来解决这个问题,在第一次使用ComboBox.Text属性之前执行。因为AjaxToolKit组合框有一个下拉子组件,所以我需要检查下拉列表,看看新值是否已经存在于列表中,并在分配新文本值之前添加它(如果缺少)

//*****************************************************************
// Fix AjaxToolKit ComboBox Text when Enter Key is pressed bug.
//*****************************************************************
public void FixAjaxToolKitComboBoxTextWhenEnterKeyIsPressedIssue(AjaxControlToolkit.ComboBox _combobox)
{
    TextBox textBox = _combobox.FindControl("TextBox") as TextBox;
    if (textBox != null)
    {
        if (_combobox.Items.FindByText(textBox.Text) == null)
        {
            _combobox.Items.Add(textBox.Text);
        }
            _combobox.Text = textBox.Text;
        }
    }
}