문제

편집 1

나는 내 문제가 다음과 같은 것으로 생각된다고 생각한다. 드롭 다운 부분을 채우는 함수는 디스플레이 멤버를 카운티 이름으로 설정합니다. 그런 다음 제안 된 바와 같이 SelectedText 또는 editValue를 설정하려고 할 때 해당 기능은 드롭 다운 목록 DisplayMember의 무언가와 일치하려는 카운티를 반환합니다. Valuemember 목록에있는 것과 일치하려면 필요합니다.

다음을 사용하여 나는 그것을 작동 시켰지만 그것은 해킹이며 실제 솔루션을 찾는 것에 크게 감사드립니다.

lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());

원본 게시물

이 코드로 DB의 가능한 값을 채우는 멤버 양식에 조회 박스 (devexpress)가 있습니다.

        lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
        lkuResidenceCounty.Properties.PopulateColumns();
        lkuResidenceCounty.Properties.DisplayMember = "CountyName";
        lkuResidenceCounty.Properties.ValueMember = "CountyID";
        lkuResidenceCounty.Properties.Columns[0].Visible = false;
        lkuResidenceCounty.Properties.Columns[2].Visible = false;
        lkuResidenceCounty.Properties.Columns[3].Visible = false;

이것은 카운티 이름이 예상대로 표시되면 잘 작동합니다.

그러나 아래를 사용 하여이 필드에 대한 기존 멤버의 값을로드하려고 할 때 데이터 세트에서 행을 취하는 함수의 일부입니다.

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

빈 상자를 얻습니다. 코드를 살펴 보았고 멤버에 대한 올바른 ID가 반환됩니다.

불행히도 드롭 다운 옵션을 채우기위한 저장된 절차는 "CountyName"& "CountyID"열로 유지 보수 테이블에서 가져옵니다. 그래서 그것은 맞습니다. 불행히도, 특정 사람의 현재 카운티를로드하기위한 저장된 절차는 "GridesencyCountyId"라는 열이있는 사람 테이블에서 가져옵니다. "ResponsibilityCountyId"열이 있기 때문에 이름이 있습니다.

둘 다 공존 할 수있는 방법이 필요합니까?

감사!

도움이 되었습니까?

해결책

DisplayMember 및 Valuember는 선택 가능한 값 목록으로 제어를 채우는 데 사용됩니다. 인구가 많은 조회 컨트롤의 선택한 값을 설정하려면 editValue 재산:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"].ToString();

편집에 대한 응답으로 : 문서에 따라 :

현재 선택된 행은 편집기 편집 값 및 디스플레이 텍스트의 값을 결정합니다. baseedit.editValue의 값은 repositoryitemlookupeditbase.valuemember 필드에서 얻은 반면 편집 상자에 표시 할 텍스트는 선택한 행의 repositoryitemlookupeditbase.displaymember 필드에서 얻습니다.

baseedit.editValue를 변경하면 편집기가 repositoryItemLookupEditBase.Valuemember 필드에 새 값이 포함 된 행을 찾아 선택합니다. 편집 상자의 텍스트는 새로 선택한 행을 반영하도록 변경됩니다.

나는이 컨트롤을 사용하지 않지만 설명대로 작동하지 않아야한다고 들립니다. editValue가 객체를 받아 들여서 값에 대한 int를 기대하기 때문에 toString ()이 문제라고 생각합니다. 노력하다:

lkuResidenceCounty.EditValue = (int)row["ResidencyCountyID"];

다른 팁

Valuember 속성은 값 속성을 설정할 때 어떤 필드에서 가져올 필드를 목록에 알려줍니다. Valuember를 "CountyID"로 설정하면 목록이 데이터 라운드 인 경우 모든 목록 항목의 값 속성을 Respect Objects 'CountyID 필드로 설정합니다.

그러므로 당신은 다음을 수행해서는 안됩니다.

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

오히려

lkuResidenceCounty.Properties.ValueMember = "CountyID";

당신이 데이터를하려는 필드를 올바르게 식별하는 한 완벽하게 괜찮 았습니다. 목록이 데이터 라운드를 얻으면 기대하는 결과가 표시됩니다.

그러나 코드를 본 후에는 분야를 일치하지 않는 것 같습니다. 한 곳에서는 ResidencyCountyId를 사용하고 다른 곳에서는 CountyID를 사용하고 있습니다. 그것은 당신의 혼란의 원천 일 가능성이 높습니다. 실제 필드 이름이 무엇인지 파악하고 가치를 설정하십시오.

업데이트

귀하의 의견을 읽은 후, 귀하가 찾고있는 것은 SelectedValue 속성입니다. selectedValue 속성은 목록에 선택한 값을 입력 한 입력으로 강제하도록 지시합니다.

본질적으로 여기에는 두 가지가 있습니다. Valuemember는 목록에 데이터 소스의 값으로 사용할 내용과 현재 선택된 값이 무엇인지 목록에 알려주는 선택 Value를 알려줍니다.

두 명의 가치 멤버를 갖기 위해 동일한 조회가 필요한 이유는 무엇입니까? 독립형 또는 그리드에 사용되고 있습니까? 독립형 인 경우 현재 행에 따라 두 개의 저장소 편집기를 교체 할 수 있습니다. 그러나 가치있는 값에 대해 2 개 이상의 가능한 값이 있습니까? 그것은 또한 물건을 복잡하게 할 것입니다.

업데이트

당신의 편집을 보면, 나는 무슨 일이 일어나고 있는지 이해한다고 생각합니다. 따라서 Valuember (데이터 열을 나타내는)를 변경하고 싶지 않고 편집기의 값을 변경하기를 원하십니까? 그렇다면 editValue (selectedText 아님, 내가 설정해야한다고 생각하지 않는 selectedText가 아님)를 사용하여 : [ "value_field"]와 같은 행에 할당해야합니다.

lkuResidenceCounty.EditValue = row["ResidencyCountyID"];

그렇게하면 어떻게됩니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top