나는이 마크 업을 Visible
속성이 올바르게 설정되지만 단추가 변경되는 것을 결코 보지 못합니다. 편집 버튼을 눌렀는데 편집 모드에 있지만 편집 버튼은 계속 표시되며보기 버튼은 여전히 숨겨져 있습니다. 나는 object sender
변수를 사용하는 대신 직접 dvDatabase.FindControl
을 통해 버튼을 찾으려고 시도했지만 그 중 하나는 작동하지 않습니다. 마크 업에서 ID
속성을 기반으로하는 변수를 가진 버튼을 참조하려고했지만 btnView
및 btnEdit
변수/속성이 없습니다. 무슨 일이야?ASP.NET은 DetailsView는 HeaderTemplate에서 버튼 가시성 변화가 OnModeChanging 처리기에서 작동하지
편집 : Tim의 제안에 따라 OnModeChanged
으로 바뀌었지만 버튼은 여전히 변경되지 않습니다.
protected void dvDatabase_ModeChanged(object sender, EventArgs e)
{
DetailsView view = /*(DetailsView)sender*/dvDatabase;
bool isEdit = DetailsViewMode.Edit == view.CurrentMode;
LinkButton viewButton = (LinkButton)view.FindControl("btnView");
LinkButton editButton = (LinkButton)view.FindControl("btnEdit");
viewButton.Visible = isEdit;
editButton.Visible = !isEdit;
}
내가 dvDatabase
클래스 변수뿐만 아니라 object sender
를 사용했지만, 어느 쪽도 영향을 미칠 것 같았다 : 여기 내 C# 지금입니다.
_ "마크 업에서 ID 속성을 기반으로하는 변수가있는 단추를 참조하려고했습니다."_ 그 의미는 무엇입니까? 보이는 속성이 올바르게 설정되었다고 했으므로 _ "btnView 및 btnEdit 변수/속성이 존재하지 않습니다"_? –
'FindControl'을 통해 버튼을 찾을 수 있습니다. 그리고 디버거를 따라 가서'Visible' 속성을 올바르게 설정하는 값을 보았습니다. 그러나'MyView.aspx.designer.cs 자동 생성 클래스에는 'DetailsView'와 달리'btnView' 또는'btnEdit' 변수가 없습니다. 이 예상 될 수 있습니다, 나는 모든 dev에 생성 된 얻을지 않습니다 ASP.NET dev에 새로운 해요. –
이는 NamingContainer가 페이지 자체 인 컨트롤 만이 designer.cs 파일에서 초기화되고 액세스 할 수 있기 때문에 정상입니다. 다른 모든 요소는 페이지 수명주기 동안 초기화됩니다. 어쨌든, 그건 왜 당신의 버튼들이 그들의 가시적 인 상태를 바꾸지 않았는지를 설명하지 못합니다. 포스트 백에서'DetailsView'를 어딘가에 databinding하고 있습니까? 그것은 이유 일 수 있습니다. –