2011-12-05 2 views
0

그래서 ... 동적으로 바인딩 된 사용자 정의 컨트롤의 일부인 컨트롤 (숨겨진 입력 필드)의 클라이언트 ID를 찾으려고합니다. 격자보기 '항목 템플리트'. "RowDataBound"이벤트에서 다음을 수행하려고했지만 작동하지 않는 것 같습니다.gridview 내 사용자 정의 컨트롤에서 클라이언트 ID 찾기

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (ShowSelectColumn) 
     { 

      HiddenField MfrHiddenField = (e.Row.Cells[2].FindControl("MfrNumHiddenfield")) as HiddenField; 
} 

여기서 "MfrNumHiddenfield"는 숨겨진 입력 필드의 ID입니다. e.row.cells [2] '의 사용자 제어'에 결합되는 칼럼의 셀 번호 ...

아래

사용자 제어가 gridview에 첨가되는 방식이다 :

grid.Columns.Add(CreateTemplateField(
      path + "ManufacturerHeader.ascx", 
      path + "ManufacturerCell.ascx")); 

내가 뭘 하려는지에 문제가 있습니까? 제발 도와주세요

+0

컨트롤의 ID를 찾으려고합니까? 아니면 ID에서 컨트롤을 가져 오려고합니까? 이미 신분증을 알고있는 것 같습니까? – c0deNinja

+0

내가하고있는 일에 대한 컨트롤의 "클라이언트 ID"를 알아야합니다. "masterpage-Gridview-column-usercontrol"에 싸여 있기 때문에 컨트롤의 ID를 사용하여 컨트롤을 찾는 것이 어려워졌습니다. 바인드 할 때 "FindControl"메서드를 사용하여 바인딩 된 열의 내부에서 컨트롤을 찾으려고했습니다. – karry

+0

어디에서이 값을 얻으려고하십니까? 마스터 페이지 또는 페이지? – TheGeekYouNeed

답변

1

일반적으로 셀을 들여다 볼 필요는 없습니다. e.Row.FindControl("MfrNumHiddenfield")으로 충분해야합니다.

e.Row.FindControl("manufacturerCellControl").FindControl("MfrNumHiddenfield") 

내가 그것을 해본 적이 있지만, 그럴 듯 보인다 : 사용자 정의 컨트롤의 컨트롤을 찾고 있기 때문에

, 당신은 시도 할 수 있습니다.

더 나은 옵션은 ManufacturerCell 컨트롤의 속성을 노출하여 원하는대로 변경하는 것입니다. 이것은 통제의 고객이 내적 활동을 이해할 필요가 없게합니다. 속성을 만들고 getset 메서드에 코드를 작성하기 만하면됩니다.

+0

I 그 일을 시도했다. 그런 식으로 작동하지 않았다. – karry

+0

'HiddenField'는'Manufacturer ... '컨트롤 안에있다? – drdwilcox

+0

네 ... 그것은 ManufacturerCell.ascx 컨트롤에 있습니다 – karry

관련 문제