0

对于新管理员。我的应用程序的功能,有一个GridView显示数据库中的记录。

有一个TextBox让用户输入员工姓名然后单击“搜索”按钮。我想在ListBox(显示相似的员工姓名)中显示搜索结果。当用户点击名称时,它会自动插入到 db 中,然后刷新GridView.

我怎样才能数据绑定ListBox基于TextBox?用户单击时如何插入值ListBox?谢谢。

<%@ 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>

后面的代码(带有建议的列表框数据绑定功能):

Imports Telerik.Web.UI

Partial 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 Sub
End Class

此外,它显示搜索功能的LINQ错误

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
4

1 回答 1

0

让事情变得更简单...将您的编辑表单移动到具有如下条目的用户控件中:

<EditFormSettings EditFormType="WebUserControl" UserControlName="adminLookup.ascx">

adminLookup.ascx添加绑定到您希望能够查找的用户列表的RadSearchBox 。然后,您应该能够在隔离的用户控件中轻松调试和解决查找查询的任何问题。

可以在此处找到此功能的演示:http: //demos.telerik.com/aspnet-ajax/grid/examples/dataediting/linqdatasource/defaultcs.aspx

于 2013-08-08T14:09:52.500 回答