2010-08-20 2 views
1

안녕하세요, 저는이 gridview를 이렇게 가졌습니다. 지금Gridview 템플릿 필드 내의 컨트롤 값을 변경하십시오. itemtemplate

<asp:DropDownList ID="triggerDropDown" runat="server" AutoPostBack="true" onselectedindexchanged="triggerDropDown_SelectedIndexChanged"> 

<asp:GridView ID="myGridView" run="server"> 
    <Columns> 
      <asp:TemplateField HeaderText="Column 1"> 
       <ItemTemplate> 
        <asp:DropDownList ID="myDropDown1" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Column 2"> 
       <ItemTemplate> 
        <asp:DropDownList ID="myDropDown2" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

, 내가 triggerDropDown 나는 또한 내가 그렇게 할 수있는 방법을 Column 1 내부의 드롭 다운을 모두 변경하려면 내 변경하면? 이벤트 방법 내부

protected void triggerDropDown_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // what should I do here? 
} 

답변

0

실제로 사용할 수 있습니다. GridViewRow :) GridViewControl을 찾아서 GridViewRowRows 속성을 가져와 이제 각 행의 foreach를 수행 할 수 있습니다.

foreach (GridViewRow gridViewRow in (this.FindControl("myGridView") as GridView).Rows) 
{ 
    // I can see all elements of my row here as if I am traversing on GridViewEvents 
} 
2

당신은 GridView의 각 행 내에있는 DropDownList에 액세스해야합니다. 이렇게하면 각 DropDownList를 원하는 데이터로 바인딩 할 수 있습니다. 기본적으로

http://www.velocityreviews.com/forums/t191319-need-help-with-accessing-a-control-within-a-template-field.html

:

이 링크는 해당 작업을 수행하는 방법을 보여줍니다 당신의 GridView의 각 행에 걸쳐

  • 으로 반복;

  • 은 무엇인가 등으로 DropDownList 컨트롤을 찾기 : mddl에

    DropDownList mddl = GridView.Rows[2].FindControl("myDropDown1");

  • 바인딩 새로운 데이터를.

+0

실제로 이벤트는 gridview의 일부가 아니고 gridview 외부에 있습니다. 내 경우에는 gridview 이미 bounded 및 gridview 내부 드롭 다운 또한 묶여 있습니다. 외부 드롭 다운이 변경되면 gridview 내부의 드롭 다운을 다시 바인딩하기 만하면됩니다. –

0

gridview는 사용자가 원하는 것 같지 않습니다. 행에 포함 된 컨트롤의 값을 변경하는 방법은 일반적으로 GridView의 ItemDataBound 이벤트에서 e.Item.FindControl()을 사용하여 원하는 컨트롤로 핸들을 가져 오는 것입니다.

접근 방식의 문제점은 gridview (triggerDropDown) 외부의 컨트롤이 gridview의 단일 행과 상호 작용하도록하려는 것입니다. 첫 번째 , 첫 번째 열, 마지막 , 첫 번째 열 또는 첫 번째 열 각 표에있는 항목의 각을 원합니까? 아마도 당신은 당신의 방아쇠 드롭 다운의 목표를 잡고 gridview 바깥에 놓고 직접 처리하는 것이 좋습니다.

그리드의 행에서 항목을 변경하려는 경우 gridview의 ItemDataBound 이벤트에서이를 수행하는 것이 좋습니다. 많은 예제가 있습니다.

+0

아니요, 단일 행이 아니라 전체 행의 단일 열입니다. –

+0

@rob w : gridview에 행이 두 개 이상 있습니까? 그것은 당신이 선택할 수있는 잠재적 인 해결책을 결정할 것입니다. – Tahbaza

+0

GridView의 ItemDataBound 이벤트 내에서 e.rowindex 속성을 확인하고 e.Item.FindControl을 사용하여 원하는 행을 참조하여 원하는 컨트롤을 참조하고 현재 선택된 값을 컨트롤 이름으로 직접 검사하여 사용자가 ' 다시하려고합니다. – Tahbaza

관련 문제