无法使用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实际值。

有什么想法吗?

谢谢!

无法使用AutoCompleteBox WebForm获取DataValueField

从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;
                    }
                }
    }