У меня возникла проблема с попыткой динамического изменения содержимого SelectCommand.
Имеется этот элемент управления Telerik searchbox, который использует SQLDataSource для постоянного удара по БД с помощью запроса select и отображения списка слов, отфильтрованных при вводе. , Затем, если вы выберете запись из списка, она станет «токеном», а затем вы сможете начать печатать снова.
В моем случае запрос должен вернуть список марок автомобилей, а первоначальный запрос будет выглядеть так:
SELECT DISTINCT mfrname
FROM Manufacturers
WHERE mfrname IS NOT NULL
ORDER BY mfrname
Так что, если я наберу "Че", то появятся "Чекер" и "Шевроле". Поэтому, если я нажму «Chevrolet», он станет токеном, и мой набор будет сброшен, поэтому я смогу начать печатать снова.
Для целей тестирования после того, как токен сгенерирован, я пренебрегал изменением моего запроса на:
SELECT DISTINCT mfrname
FROM manufacturers
WHERE mfrname IS NOT NULL and mfrname like 'm%'
ORDER BY mfrname
Обратите внимание, что теперь следует выбирать только те марки автомобилей, которые начинаются с буквы "M", например "Mercedes", "Maseratti" и т. Д. c, поэтому, если я наберу что-нибудь еще, что не начинается с буквы "M" он ничего не должен показывать.
Однако, если я наберу "Че" там, это снова "Checker" и "Chevrolet", давая понять, что он все еще использует первоначальный запрос, а не новый.
Хорошо, я знаю, что событие запускается и значение SelectCommand изменяется (я знаю это, потому что я добавил метку, которая меняет и отображает новое значение). Чего я не знаю, так это того, почему элемент управления продолжает использовать старый запрос, а не новый! Есть идеи?
Мой код:
<form id="form1" runat="server">
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadAutoCompleteBox RenderMode="Lightweight" runat="server" ID="RadAutoCompleteBox1" autopostback="true" EmptyMessage="Type in car make..."
DataSourceID="SqlDataSource1" DataTextField="mfrname" InputType="Token" Width="450" DropDownWidth="150px" OnEntryAdded="RadAutoCompleteBox1_EntryAdded" >
</telerik:RadAutoCompleteBox>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" CancelSelectOnNullParameter="false" ConnectionString="<%$ ConnectionStrings:MyConn %>" SelectCommand="SELECT DISTINCT mfrname FROM Manufacturers WHERE mfrname IS NOT NULL ORDER BY mfrname">
</asp:SqlDataSource>
<div>
<br />
<asp:label id="label1" runat="server">Waiting for update...</asp:label>
</div>
</form>
Мой код:
Protected Sub RadAutoCompleteBox1_EntryAdded(sender As Object, e As Telerik.Web.UI.AutoCompleteEntryEventArgs)
SqlDataSource1.SelectCommand = "SELECT DISTINCT mfrname FROM manufacturers WHERE mfrname IS NOT NULL and mfrname like 'm%' ORDER BY mfrname"
RadAutoCompleteBox1.DataBind()
label1.Text = e.Entry.Text + " was added. (" + SqlDataSource1.SelectCommand + ")"
End Sub