无法使用AutoCompleteBox WebForm获取DataValueField
本文关键字:WebForm 获取 DataValueField AutoCompleteBox | 更新日期: 2023-09-27 18:20:15
我有一个radAutoCompleteBox,可以获得Text属性,但我需要ID。
My AppData.cs方法:
public IEnumerable<Company> GetAllCompanies()
{
_companyRepository = new CompanyRepository();
return _companyRepository.GetAll();
}
.aspx文件上的我的插入模板:
<telerik:RadAutoCompleteBox ID="acCompany" runat="server" EmptyMessage="Empresas..." AllowCustomEntry="False" RenderMode="Lightweight" DataSourceID="CompanyObjectDataSource" DataTextField="TradeName" DataValueField="IDCompany" />
aspx文件上的数据源:
asp:ObjectDataSource ID="CompanyObjectDataSource"runat="server"SelectMethod="GetAllCompanies"TypeName="Apontamento.DataSource"
和我的.cs文件:
protected void radGrid1_OnInsertCommand(object sender, GridCommandEventArgs e)
{
var item = e.Item as GridEditFormItem;
var company = (item.FindControl("acCompany") as RadAutoCompleteBox).Text;
var idCompany = (item.FindControl("acCompany") as RadAutoCompleteBox).DataValueField;
}
所以,我只是无法让idCompany正常工作。它总是返回字符串值"IDCompany",而不是ID实际值。
有什么想法吗?
谢谢!
从RadControls for ASP.NET AJAX文档中,您似乎需要处理EntryAdded
事件,如下所示:
protected void RadAutoCompleteBox1_EntryAdded(object sender, AutoCompleteEntryEventArgs e)
{
// Label1 is made up here just for example's sake
// e.Entry.Text will give you the name selected
// e.Entry.Value will give you the ID selected
Label1.Text = e.Entry.Value + " was added.";
}
看起来,没有像RadComboBox那样简单的方法可以获得id,但您可以循环条目并逐文本查找条目。以下内容(未经测试):
var autoCompleteBox = (item.FindControl("acCompany") as RadAutoCompleteBox);
int idCompany = 0;
if (autoCompleteBox !=null)
{
foreach (AutoCompleteBoxEntry entry in autoCompleteBox.Entries)
{
if (entry.Text == autoCompleteBox.Text)
{
idCompany = Convert.ToInt32(entry.Value);
break;
}
}
}