2017-03-23 13 views
0

나는 이것을 몇 시간 동안 알아 내려고 노력해 왔습니다. 너무 슬퍼! 내 ascx의 구조는DetailsView에서 CheckBoxField를 가져 오는 방법

<asp:DetailsView ...> 
    <Fields> 
     . 
     . 
     <asp:CheckBoxField DataField="ThingEnabled" HeaderText="Thing Enabled"/> 
     . 
     . 
     . 
    </Fields> 
</asp:DetailsView> 

처럼 내가 원하는 요소는 ThingEnabled 하나입니다.

설정 : CheckBoxFieldID 특성이없는, 그래서 FindControl을 사용할 수 없습니다

DetailsView dv = (DetailsView)sender; 
CheckBoxField cbf = ???? 

참고. DetailsView 그것을 가지고 각 행에 대해 컨트롤 ID의 대신에 세포를 사용하는

답변

0

참고, 따라서이 같은 행, 셀 및 제어 위치를 사용하여 CheckBoxField 값을 얻을 수 있습니다 :

// Page_Load is just an example event here, change to any event you need 
protected void Page_Load(object sender, EventArgs e) 
{ 
    DetailsView dv = sender as DetailsView; 

    // the checkbox uses checked state as its value to be passed 
    // n = row/cell/control indexes where CheckBoxField has bound into, starting from 0 
    // e.g. dv.Rows[0].Cells[0].Controls[0] as CheckBox 
    bool checkboxvalue = (dv.Rows[n].Cells[n].Controls[n] as CheckBox).Checked; 
} 

을 여전히 FindControl를 사용하려는 경우 , ItemTemplate 래퍼 요소를 사용하고 그것에 CheckBox 컨트롤을 만드는 (당신은 데이터 바인딩에 대한 TemplateField 위에 DataField="ThingEnabled"BoundField을 사용해야 할 수도 있습니다) :

<asp:DetailsView runat="server" ...> 
    <Fields> 
     ... 
     <asp:TemplateField HeaderText="Thing Enabled"> 
      <ItemTemplate> 
       <asp:CheckBox ID="ThingEnabled" runat="server" Checked="<%# Bind("ThingEnabled") %>"> 
       </asp:CheckBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Fields> 
</asp:DetailsView> 
,691 363,210

는 그런 다음 FindControl을 사용하여 해당 확인란 컨트롤에 액세스 할 수 있습니다

DetailsView dv = sender as DetailsView; 

// n = row/cell indexes, starting from 0 
bool checkboxvalue = (dv.Rows[n].Cells[n].FindControl("ThingEnabled") as CheckBox).Checked; 

참조/유사한 문제 :

How to get value from DetailsView Control in ASP.NET?

Get the value of a BoundField from a DetailsView

Accessing DetailsView check box value

+0

'검사 = '<% # 바인딩 ("ThingEnabled") %> ''- 오류가 발생합니다 속성을 작은 따옴표로 묶지 않으면 태그의 형식이 잘못되었습니다. – snumpy