for the new admin. function of my application, there is a gridview to show records in database.
there is a textbox to let user input staff name and then click "search" button. I want to show the search result in Listbox (show similar staff name). when user click on the name, it will automatically insert into db and then refresh the gridview.
How can I databind the listbox based on the textbox ? and how can i insert the value when user click listbox ? Thanks.
Code Behind (with proposed listbox databind function) :
moreover, it display error for the linq of searching function
the error msg as follows:
Compiler Error Message: BC36610: Name 'x' is either not declared or not in the current scope.
there is a textbox to let user input staff name and then click "search" button. I want to show the search result in Listbox (show similar staff name). when user click on the name, it will automatically insert into db and then refresh the gridview.
How can I databind the listbox based on the textbox ? and how can i insert the value when user click listbox ? Thanks.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ITAlert.aspx.vb" Inherits="DepartmentManager_ITAlert" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div style="width: 500px; margin-left: auto; margin-right: auto;"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <asp:Label ID="Label1" runat="server" Text="Staffs to get the email alert:" Font-Bold="true"></asp:Label> <br /><br /> <telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True" allowpaging="true" AutoGenerateColumns="False" DataSourceID="LDS" GridLines="None" pagesize="20" AllowAutomaticDeletes="True" Style="border: 0; outline: none;" OnDeleteCommand="RadGrid1_DeleteCommand" > <ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True"> <Selecting AllowRowSelect="True" /> </ClientSettings> <MasterTableView DataSourceID="LDS" DataKeyNames="ID"> <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"> <HeaderStyle Width="20px"></HeaderStyle> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="DisplayName" FilterControlAltText="Filter Name column" HeaderText="Staff Name" ReadOnly="True" SortExpression="DisplayName" UniqueName="DisplayName"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ConfirmText="Delete this record?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" Text="Delete" CommandName="Delete" /> </Columns> <EditFormSettings> <EditColumn FilterControlAltText="Filter EditCommandColumn column"> </EditColumn> </EditFormSettings> </MasterTableView> <FilterMenu EnableImageSprites="False"> </FilterMenu> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> </HeaderContextMenu> </telerik:RadGrid> <asp:LinqDataSource ID="LDS" runat="server" ContextTypeName="DataContext" OrderBy="DisplayName" Select="new (ID, DisplayName)" TableName="v_EmailAlerts" Where="Type == 4"> <WhereParameters> <asp:QueryStringParameter Name="CID" QueryStringField="CID" Type="Int32" /> </WhereParameters> </asp:LinqDataSource> <br /> <br /> <asp:TextBox runat="server" ID="tb_staffname"> </asp:TextBox> <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_click"/> <telerik:RadListBox runat="server" ID="RadListBox_staff" Height="300px" Width="230px" AllowTransfer="false" AutoPostBack="false" style="top: 0px; left: 0px" DataSourceID="LDS_staff" DataTextField="displayname" DataValueField="sid" > </telerik:RadListBox> <asp:LinqDataSource ID="LDS_staff" runat="server" ContextTypeName="dcHRISDataContext" OrderBy="DisplayName" Select="new (SID, DisplayName)" TableName="vHRIS_StaffDBs" Where="Lefe == False and SID is nothing"> </asp:LinqDataSource> </div> </form></body></html>Code Behind (with proposed listbox databind function) :
Imports Telerik.Web.UIPartial Class DepartmentManager_ITAlert Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) End Sub Protected Sub RadGrid1_DeleteCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) Handles RadGrid1.DeleteCommand Dim AlertID = DirectCast((DirectCast(e.Item, GridDataItem)).GetDataKeyValue("ID"), Integer) 'retrive entity form the Db Dim dc As New DataContext Dim rec = (From a In dc.EmailAlerts Where a.id = AlertID).firstordefault If rec IsNot Nothing Then dc.HRIS_EmailAlerts.DeleteOnSubmit(rec) dc.SubmitChanges() End If End Sub Protected Sub btnSearch_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click Dim sname As String = "" sname = tb_staffname.text If sname <> "" Then Dim dc As New dcHRISDataContext Dim rec = (From a In dc.vHRIS_StaffDBs Where a.Lefe = False _ And (x >= x.DisplayName.Matches(sname)) Select a.SID, a.DisplayName Order By DisplayName).ToList RadListBox_staff.DataTextField = "DisplayName" RadListBox_staff.DataValueField = "SID" RadListBox_staff.DataSource = dt RadListBox_staff.DataBind() End If End SubEnd Classmoreover, it display error for the linq of searching function
Dim rec = (From a In dc.vHRIS_StaffDBs Where a.Lefe = False _ And (x >= x.DisplayName.Matches(sname)) Select a.SID, a.DisplayName Order By DisplayName).ToListthe error msg as follows:
Compiler Error Message: BC36610: Name 'x' is either not declared or not in the current scope.