C# 按下enter键时,如何在AjaxControlToolkit组合框中获取用户输入的值?
问题是: 按enter键时,AjaxControlToolkit组合框的.Text属性中缺少用户输入的值。另外,“on change”事件也没有被调用,但我没有使用回发,所以我不在乎 例如: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
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;
}
}
}