Share via


Human Resources ASP.NET-Website (EDM-Beispielanwendung)

Die Human Resources ASP.NET-Anwendung ist eine Schnittstelle, die in einem Netzwerk oder im Internet verwendet werden kann, um mithilfe des folgenden Beispiels definierte und kompilierte Daten anzuzeigen: Human Resources Skills-WinApp (EDM-Beispielanwendung). Die Schemas und DLLs, auf die von dieser Webanwendung verwiesen werden, sind dieselben, die auch von der Windows-Anwendung verwendet werden. Die Website wird in drei Schritten erstellt:

  1. Entwerfen der Benutzeroberfläche als Formular auf einer Webseite mit Textfeldern und GridView-Steuerelementen zur Verwaltung der Eingabe und der Anzeige von Daten.

  2. Schreiben des ASP.NET-Codes für die Schnittstelle zur Behandlung von Eingabeereignissen und zur Anzeige der Ergebnisse von Suchvorgängen, die mithilfe von Benutzern eingegebener Parameter durchgeführt werden.

  3. Konfigurieren von IIS zur Ausführung der ASP.NET-Anwendung und Herstellung einer Verbindung mit auf dem SQL-Server gespeicherten Daten, die vom HRSkills-Datenmodell verwendet werden.

Benutzeroberfläche

Die Benutzeroberfläche besteht aus zwei Textfeldern für die Texteingabe, über die Suchparameter definiert werden. Die Benutzer können durch Eingabe des ersten Buchstabens des Nachnamens nach Mitarbeitern oder anhand von Schlüsselwörtern nach Fähigkeiten suchen. Die Ergebnisse der anhand dieser Parameter durchgeführten Suchen werden mithilfe von GridView-Steuerelementen angezeigt, die an EDM-Objektabfragen gebunden sind, die die Mitarbeiter, Fähigkeiten und persönlichen Referenzen darstellen.

Die Benutzeroberfläche wird in der folgenden Bildschirmanzeige angezeigt:

Abfrageergebnisse der ASP.NET-Anwendung "HR Skills"

Folgende XML-Spezifikation definiert die Formulare und Steuerelemente auf der dem Benutzer angezeigten Webseite. Kopieren Sie diese Syntax in die Datei Default.aspx der ASP.NET-Webanwendung in Visual Studio.

<%@ Page Language="C#" AutoEventWireup="true"  
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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 >
    <title>HR Skills Online</title>
</head>
<body>
    <form id="form1" >
    &nbsp;<asp:Label ID="Label1"  Font-Bold="True" 
        Text="Filter employees by first letter of last name; 
        Use * to get all employees: "></asp:Label>
&nbsp;<asp:TextBox ID="TextBox1"  MaxLength="1" 
        ontextchanged="TextBox1_TextChanged" Width="29px" 
        AutoPostBack="True"></asp:TextBox>
&nbsp;&nbsp;
        <br />
        <asp:Label ID="Label2"  Font-Bold="True" 
        Text="Search for skills on  keyword; Use * to get all skills: ">
        </asp:Label>
        <asp:TextBox ID="TextBox2"  MaxLength="50" 
        Width="271px" AutoPostBack="True" 
        ontextchanged="TextBox2_TextChanged">
        </asp:TextBox>
&nbsp;<asp:GridView 
        ID="GridView1"  BackColor="LightGoldenrodYellow" 
        BorderColor="Tan" BorderWidth="1px" CellPadding="2" 
        ForeColor="Black" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" 
        Caption="Employees (Click row for skills)" CaptionAlign="Top"
        CellSpacing="1">
            <footerstyle backcolor="Tan" />
            <selectedrowstyle backcolor="DarkSlateBlue"
            forecolor="GhostWhite" />
            <pagerstyle backcolor="PaleGoldenrod" 
            forecolor="DarkSlateBlue" 
            horizontalalign="Center" />
            <headerstyle backcolor="Tan" font-bold="True" 
            font-size="Medium" />
            <alternatingrowstyle backcolor="PaleGoldenrod" />
        </asp:GridView>
        <br />
        <asp:GridView 
        ID="GridView2"  BackColor="LightGoldenrodYellow" 
        BorderColor="Tan" BorderWidth="1px" CellPadding="2" 
        ForeColor="Black" 
        onselectedindexchanged="GridView2_SelectedIndexChanged" 
        Caption="Skills (Click row for details)" CaptionAlign="Top" 
        CellSpacing="1" 
        PageSize="5">
            <footerstyle backcolor="Tan" />
            <selectedrowstyle backcolor="DarkSlateBlue" 
            forecolor="GhostWhite" />
            <pagerstyle backcolor="PaleGoldenrod" 
            forecolor="DarkSlateBlue" horizontalalign="Center" />
            <headerstyle backcolor="Tan" font-bold="True" />
            <alternatingrowstyle backcolor="PaleGoldenrod" />
        </asp:GridView>
        <br />
        <asp:GridView ID="GridView3"  
        BackColor="LightGoldenrodYellow" 
        BorderColor="Tan" BorderWidth="1px" CaptionAlign="Top"
        CellPadding="2" 
        CellSpacing="1" ForeColor="Black" 
        onselectedindexchanged="GridView3_SelectedIndexChanged">
            <footerstyle backcolor="Tan" forecolor="GhostWhite" />

            <pagerstyle backcolor="PaleGoldenrod" 
            forecolor="DarkSlateBlue" 
            horizontalalign="Center" />
            <headerstyle backcolor="Tan" font-bold="True" />
            <alternatingrowstyle backcolor="PaleGoldenrod" />
        </asp:GridView>
    </form>
</body>
</html>

ASP.NET-Code für Websteuerelemente

Der für die Behandlung von Benutzereingabeereignissen verwendete C#-Code ist in der CodeBehind-Datei Default.aspx.cs enthalten. Der folgende Code wird verwendet, um Objektabfragen zu definieren und Ergebnisse an GridView-Steuerelemente zu binden. Die Vorgänge werden unter HR Skills-Anwendungscode (EDM-Beispielanwendung) genauer beschrieben.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HRSkillsModel;
using System.Data.Objects;

namespace HRSkillsOnline
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void GridView1_SelectedIndexChanged(object sender,
        EventArgs e)
        {
            GridView2.SelectedIndex = -1;
            GridView3.SelectedIndex = -1;
            string connectionStr =
                Application.Contents["connectionString"] as string;


            using (HRSkillsEntities HRSkills = new HRSkillsEntities())
            {
                Guid empId = new Guid(
                    GridView1.SelectedRow.Cells[1].Text);
                // Find the Employee.
                ObjectParameter param = new ObjectParameter("p", empId);

                Employees employee = HRSkills.Employees.Where(
                    "it.EmployeeId = @p", param).First();

                employee.Skills.Load();

                GridView2.Caption = "Skills of "
                    + employee.FirstName + " " +
                    employee.LastName;

                GridView2.AutoGenerateSelectButton = true;
                GridView2.DataSource = employee.Skills;
                GridView2.DataBind();
                GridView2.Focus();

                // Find Employee references.
                employee.References.Load();

                GridView3.AutoGenerateSelectButton = false;
                GridView3.Caption = "References for "
                    + employee.FirstName + " " +
                    employee.LastName;

                GridView3.DataSource = employee.References;
                GridView3.DataBind();
            }


        }

        protected void GridView2_SelectedIndexChanged(object sender,
            EventArgs e)
        {
            string connectionStr =
                Application.Contents["connectionString"] as string;

            using (HRSkillsEntities HRSkills = new HRSkillsEntities())
            {
                // Create a ObjectParameter from the SkillId property 
                // and get the Skill.
                Guid skillId = new Guid(
                    GridView2.SelectedRow.Cells[1].Text);

                ObjectParameter param =
                    new ObjectParameter("p", skillId);

                Skills skill = HRSkills.Skills.Where("it.SkillId = @p",
                    param).First();

                // Load the SkillInfo entities using 
                // SkillInfo_Skill association.
                skill.SkillInfo.Load();

                GridView3.AutoGenerateSelectButton = true;
                GridView3.DataSource = skill.SkillInfo;
                GridView3.DataBind();
                GridView3.Caption = "Skills URLs for " +
                    GridView2.SelectedRow.Cells[2].Text;
                GridView3.Focus();
            }

        }
        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            GridView1.SelectedIndex = -1;
            GridView2.SelectedIndex = -1;
            GridView3.SelectedIndex = -1;

            string connectionStr =
                Application.Contents["connectionString"] as string;

            using (HRSkillsEntities HRSkills = new HRSkillsEntities())
            {
                if ("*".Equals(TextBox1.Text))
                {
                    GridView1.Caption = "All Employees in System";
                    GridView1.AutoGenerateSelectButton = true;
                    GridView1.DataSource = 
                        HRSkills.Employees.Execute(
                        MergeOption.OverwriteChanges);
                    GridView1.DataBind();

                    TextBox1.Text = "";
                    return;
                }
                ObjectParameter param =
                    new ObjectParameter("p", TextBox1.Text.ToUpper());

                ObjectQuery<Employees> dbQuery = 
                    HRSkills.Employees.Where(
                    "SqlServer.SUBSTRING(it.LastName, 1, 1) = @p",
                    param);

                GridView1.Caption = "Employees' last name on: " +
                    TextBox1.Text.ToUpper();
                GridView1.AutoGenerateSelectButton = true;
                GridView1.DataSource = 
                    dbQuery.Execute(MergeOption.OverwriteChanges);
                GridView1.DataBind();
            }
            TextBox1.Text = "";
        }

        protected void TextBox2_TextChanged(object sender, EventArgs e)
        {
            string connectionStr =
                Application.Contents["connectionString"] as string;

            using (HRSkillsEntities HRSkills = new HRSkillsEntities())
            {
                GridView1.SelectedIndex = -1;
                GridView2.SelectedIndex = -1;
                GridView3.SelectedIndex = -1;

                if ("*".Equals(TextBox2.Text))
                {
                    GridView2.Caption = "All Skills in System.";
                    GridView2.AutoGenerateSelectButton = true;
                    GridView2.DataSource = 
                        HRSkills.Skills.Execute(
                        MergeOption.OverwriteChanges );
                    GridView2.DataBind();
                    GridView1.DataSource = null;
                    GridView1.DataBind();

                    TextBox2.Text = "";
                    return;
                }

                // Create ObjectParameter from each keyword 
                // and search properties of Skills.

                ObjectParameter param = new ObjectParameter(
                    "p", "%" + TextBox2.Text.Trim(
                    '\"', '&', '%', '$', '#') + "%");

                ObjectQuery<Skills> skillsQuery =
                    HRSkills.Skills.Where(
                    "it.BriefDescription Like @p " +
                    "OR it.SkillName Like @p", param);

                List<Employees> employeeList = new List<Employees>();
                foreach (Skills skill in skillsQuery)
                {
                    skill.EmployeesReference.Load();
                    employeeList.Add(skill.Employees);
                }

                GridView1.Caption = "Employees with skills on " +
                    TextBox2.Text;
                GridView1.AutoGenerateSelectButton = true;
                GridView1.DataSource = employeeList;
                GridView1.DataBind();

                GridView2.Caption = "Skills on " +
                    TextBox2.Text;
                GridView2.AutoGenerateSelectButton = true;
                GridView2.DataSource = 
                    skillsQuery.Execute(MergeOption.OverwriteChanges);
                GridView2.DataBind();
            }
            TextBox2.Text = "";
        }

        protected void GridView3_SelectedIndexChanged(object sender,
            EventArgs e)
        {
            string scriptString = @"<script> window.open('" +
                GridView3.SelectedRow.Cells[2].Text +
                "', left=100)</script>";
            if (!ClientScript.IsClientScriptBlockRegistered("PopUpWindow"))
                ClientScript.RegisterClientScriptBlock(GridView3.GetType(),
                    "PopUpWindow", scriptString);
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

Siehe auch

Konzepte

Human Resources Skills-WinApp (EDM-Beispielanwendung)