2009-08-28 5 views
0

"lvQuestions"라는 레이블이 붙은 목록보기 (lblMissingField)와 다른 필드가 있습니다. 사용자가 페이지를 다시 게시하려고하면 처음에 ALL lvlMissingField.Text = string.empty을 설정하고 ListViewDataItem의 "other"필드가 채워 졌는지 확인합니다. 채워지지 않은 경우 특정 목록보기의 lvlMissingField.Text = "*"을 시각적으로 설정합니다 "*"(표준 : asp.net 유효성 검사기가 사용되지 않음)로 표시하십시오.ListViewDataItem 설정 속성의 레이블이 모든 레이블에 영향을 미침

그래서 어떻게됩니까? 모든 lblMissingField.Visible이 표시됩니다. 여기서 내가 무엇을 놓치고 있습니까?

foreach(ListViewDataItem question in unansweredQuestions) 
{ 
    ((Label)question.FindControl("lblMissingField")).Text = "*"; 
} 

I합니다 ... unansweredQuestions 내가 원하는 만 ListViewDataItems이라는 것을 만들었어요, 여전히에 "*"HTML은 그들 모두를 설정 출력을보고 놀라게입니까?

행운없이 텍스트를 '*'(내 원래 환경 설정)로 설정하는 대신 Visible = true 설정을 시도해 보았습니다. 여기에 조금 미친가는

은 ...

나는 당신이 무엇을하고 있는지 및 업데이트/검사가 수행 된 서버 측 유사한 기능을 할 필요가있다

답변

0

, 내가 원하는 각 컨트롤에 대한 데이터 바인딩 방법을 구현 한 맞춤 설정할 수 있습니다. 무언가가 바뀌면 변경해야 할 비트와 조각이 업데이트되어 모델에 리바 인드됩니다.

public class MyData 
{ 
    public string Question { get; set; } 
    public string Answer { get; set; } 
} 
public List<MyData> listOfMyData = GetListOfMyData(); 

그리고 라벨에 내 데이터 바인딩 이벤트가

구현 될 것입니다 : 귀하의 경우 예를 들어, 그래서

는 다음과 같은 세부 정보를 가지 내가 (DataTable의 수 또는 어떤 수) 객체의 목록에 바인딩하고 가정 그런 다음

<asp:Label ID="lblMissingField" runat="server" OnDataBinding="lblMissingField_DataBinding" /> 

데이터 바인딩의 구현 :

protected void lblMissingField_DataBinding(object sender, System.EventArgs e) 
{ 
    Label lbl = (Label)(sender); 
    lbl.Text = (Eval("Answer").ToString() == string.Empty) ? "*" : string.Empty; 
} 

이것은 템플릿의 모든 단일 항목에 대해 많은 통제권을 부여합니다. 데이터가로드 된 후에 모든 컨트롤을 처리하는 대신 데이터 바인딩시 데이터를 수정할 수 있습니다.

정확한 질문에 대한 해결책은 아니지만 문제에 접근하는 다른 방법에 대한 제안 일 수도 있습니다.

+0

고마워요! 비슷한 것을 구현했고 실제로 잘 작동합니다. 나는 그 문제가 다른 방향으로 무엇인지 알아 내려고 애 쓰면서 너무 많은 시간 동안 노력했다 - 그것은 단지 이해가 가지 않는다. – MrFishy

관련 문제