2013-05-28 4 views
0

지금 나는 검색 기능을 사용하고 있습니다. 나는 텍스트 박스와 버튼을 가지고 있으며 직원들로 가득 찬 데이터베이스에서 검색합니다. 또 다른 웹 파트에서 직원들은 기술 능력을 데이터베이스에 저장하고 어느 수준에 있는지 (초급, 중급, 고급 또는 전문가) 저장할 수 있습니다. 관리자로서 예를 들어 C#을 알고있는 직원을 검색하려면 해당 항목을 검색하면 스킬이있는 모든 직원이 gridview에 나타납니다.데이터베이스에서 검색 결과 필터링

는하지만 여기 내 질문은 :

는 그 결과를 필터링 할 수 있습니까? 예를 들어 검색 후 확인란을 선택하고 C#의 "전문가"인 직원을 필터링하려는 경우 표시 할 수 있습니까? 영어로 유감 스럽지만 최선을 다했습니다. 바라기를 나는 대답을 얻는다. 등

초급

private void SearchEmployeeSkillEng() 
    { 
     using (var db = new KnowItCvdbEntities()) 
     { 
      var searchTechSkill = (from p in db.EMPLOYEES 
            join ets in db.EMPLOYEES_TECHNICAL_SKILLS on p.employee_id equals 
             ets.employee_id 
            join ts in db.TECHNICAL_SKILLS_VALUES on ets.technical_skill_value_id 
             equals 
             ts.technical_skill_value_id 
            join tsl in db.TECHNICAL_SKILL_LEVEL on ets.technical_skill_level_id 
             equals 
             tsl.technical_skill_level_id 
            where 
             ts.skill_name.Contains(TextBoxSearchCvEng.Text) || 
             ets.skill_name_other.Contains(TextBoxSearchCvEng.Text) 
            select new TechnicalSkillsSearch() 
            { 
             EmployeeId = p.employee_id, 
             FirstName = p.firstname, 
             LastName = p.lastname, 

             TechnicalSkillValueId = ts.technical_skill_value_id, 
             SkillName = ts.skill_name, 
             SkillNameOther = ets.skill_name_other, 
             SkillType = ts.skill_type, 
             TechnicalSkillLevelId = tsl.technical_skill_level_id, 
             SkillLevel = tsl.skill_level 
            }).ToList(); 

      if(searchTechSkill.Count > 0) 
      { 
       LabelException.Visible = false; 
       foreach (var vTechSkill in searchTechSkill) 
       { 
        if (vTechSkill != null) 
        { 
         if (vTechSkill.SkillNameOther != null) 
         { 
          if (!_searchEmpListEng.Contains(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                 vTechSkill.EmployeeId)) 
          { 
           _searchEmpListEng.Add(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                vTechSkill.EmployeeId.ToString()); 
          } 
         } 
         else 
         { 
          if (!_searchEmpListEng.Contains(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                 vTechSkill.EmployeeId)) 
          { 
           _searchEmpListEng.Add(vTechSkill.FirstName + " " + vTechSkill.LastName + "," + 
                vTechSkill.EmployeeId.ToString()); 
          } 
         } 
        } 
       } 
      } 
      else 
      { 
       LabelException.Visible = true; 
       LabelException.Text = "Nothing found"; 
      } 
      _dtEng.Clear(); 

     } 
    } 

TECHNICAL_SKILLS_VALUES는 예를 들어, C#을, MS 액세스 등을위한 것이며 TECHNICAL_SKILL_LEVEL 예를 전문가를위한 것입니다 여기에 enter image description here

내가 검색하는 방법에 대한 코드 예제

너의 것, 크리스티앙

+0

예, 가능합니다. 새 필터를 포함하도록 쿼리를 수정하거나 GridView 클라이언트 측을 필터링합니다. 몇 가지 코드를 게시하십시오. 죄송합니다. SharePoint에 대해 잘 모르겠습니다. –

+0

@SamLeach, 그냥 이미지와 코드 예제를 제공하십시오. – Kriistiian

답변

0

다음은 쿼리 결과를 네이티브 C# 개체 컬렉션으로 직렬화 한 직후에 Employees를 필터링하는 몇 가지 의사 코드입니다. List<Employee> (직원 개체 목록)이 있고 Employee 개체에 수준 필드가 있다고 가정합니다. 당신이 수준에서 사용자의 입력을 얻기 위해 사용하고 있지만 기본적인 생각 어떤 ListBox.CurrentSelection 나 같은 내 하드 코딩 "전문가"를 교체해야 물론

List<Employee> experts = oldList.Select(x => x).Where(y => y.level == "Expert").ToList(); 

.

+0

예를 들어 주셔서 감사합니다. 어쩌면 당신이 나를 더 도울 수 있을지에 대한 이미지를 제공 할 것입니다. – Kriistiian

+0

이미지와 코드 예제를 제공했습니다. – Kriistiian