2012-02-09 3 views
0

코드 아래에서이 코드를 사용했지만 작동하지 않습니다. 머리글 확인란을 선택하면 다른 모든 확인란을 선택하고 특정 코드를 가져 오는 방법 행 ID (확인란이 선택된 경우)머리글 확인란을 선택한 경우 격자보기로 다른 모든 확인란을 선택해야합니다.

protected void headerLevelCheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox headerChkBox = ((CheckBox)gvApproach.HeaderRow.FindControl("headerLevelCheckBox")); 

    if (headerChkBox.Checked == true) 
    { 
     foreach(GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 

      rowChkBox.Checked = true;//((CheckBox)sender).Checked;  
     } 
    } 
    else 
    { 
     foreach (GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 
      rowChkBox.Checked = false; 
     } 
    }   
} 

난 당신이 서버에 그렇게하지 않고, 대신에 클라이언트에서 그것을 할 것을 제안

+0

... 'if'조건이 필요 없습니다. – Reniuz

+0

나는 대답을 얻었다. ur repley에 대해 감사합니다. – ani

답변

3

영문 코드를 도움이되기를 바랍니다. .. 그리고 특정 ID를 얻으려면 ROW IN GRID VIEW를 사용합니다. PhotoId (PK)로 labe 컨트롤을 사용했습니다.

<asp:GridView ID="gvApproach" runat="server" CellPadding="4" AutoGenerateColumns="False" 
     GridLines="None"> 
<Columns> 
    <asp:TemplateField HeaderText="PhotoId" Visible="false"> 
    <ItemTemplate> 
    <asp:Label ID="lblPhotoId" runat="server" Text='<%#Eval("PhotoId") %>' Visible="false"></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 

<asp:TemplateField> 
     <HeaderTemplate> 
      <asp:CheckBox runat="server" ID="headerLevelCheckBox" AutoPostBack="true" oncheckedchanged="headerLevelCheckBox_CheckedChanged" />     
     </HeaderTemplate> 
     <ItemTemplate> 
      <asp:CheckBox runat="server" ID="rowLevelCheckBox" AutoPostBack="true"/> 
     </ItemTemplate> 
</asp:TemplateField>   
    </Columns> 
뒤에 코드에서

....

protected void headerLevelCheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox headerChkBox = ((CheckBox)gvApproach.HeaderRow.FindControl("headerLevelCheckBox")); 

    if (headerChkBox.Checked == true) 
    { 
     foreach(GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 

      rowChkBox.Checked = true;  
     } 
    } 
    else 
    { 
     foreach (GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 
      rowChkBox.Checked = false; 
     } 
    }   
} 
2

.. 자바 스크립트를 사용하지 않고 #

c를 2008 대 사용하고 있습니다. 자바 스크립트를 사용하십시오. 해당 페이지에서 jQuery를 사용하고 있습니까 (해당 라이브러리에서 더 쉬울 수 있습니다)? 어쩌면이 튜토리얼은 도움이 될 것입니다 http://www.4guysfromrolla.com/articles/120810-1.aspx

0

당신이

headerChkBox 같은 것을 사용해야 구체적으로 onclick을 = "changeCheckboxes (이)"

function changeCheckboxex(mainCheck) 
{ 
    $(yourDivContainer).children("INPUT[type='checkbox']").attr('checked', yourValue); 
} 

그것이

0

당신은 자바 스크립트를 사용하여 수행 할 경우,

당신은 기록 'ID를 유지 확인란의 도구 설명 속성을 사용해야합니다. 예를 들어 :

<asp:CheckBox ID="rowLevelCheckBox" runat="server" ToolTip='<%#Eval("ID")%>' /> 

그런 다음, 당신은 자바 스크립트 코드 헤더의 클릭 체크 박스를 사용해야합니다.

<script type="text/javascript"> 
    function SelectAll(element) { 
     if ($(element).attr("checked")) { 
      $("input[type=checkbox]").attr("checked", "true"); 
     } 
     else { 
      $("input[type=checkbox]").attr("checked", ""); 
     } 
    } 
</script> 

<HeaderTemplate> 
<div style="text-align: center; width: 100px; margin: auto"> 
<input type="checkbox" name="SelectAllCheckBox" onclick="SelectAll(this)">Select All</div> 
</HeaderTemplate> 

마지막으로, Code Behind.

선택한 ID를 가져 오시겠습니까?이 코드를 사용할 수 있습니다.

public List<string> GetAllSelectedIds() 
{ 
    List<string> selectedIds= new List<string>(); 
    for (int i = 0; i < grid.Rows.Count; i++) 
    { 
     GridViewRow row = grid.Rows[i]; 
     if (((CheckBox)row.FindControl("rowLevelCheckBox")).Checked) 
     { 
      string rowLevelCheckBoxStr = ((CheckBox)row.FindControl("rowLevelCheckBox")).ToolTip; 
      selectedIds.Add(rowLevelCheckBoxStr); 
     } 
    } 
    return selectedIds; 
} 
관련 문제