簡體   English   中英

如果選中了標題復選框,則應在網格視圖中選中所有其他復選框

[英]if header check box checked,then all other check box's should checked in grid view

我使用了下面的代碼,但它不起作用..如果我選擇標題復選框,則所有其他復選框都應選中,以及如何獲取特定的行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;
        }
    }        
}

我正在使用vs 2008,c#

不使用javascript ..

aspx代碼...並獲取特定行ID的ID,我將Labe控件用作PhotoId(PK)

<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;
        }
    }        
}

我建議您不要在服務器上執行此操作,而應在客戶端上執行。 使用javascript。 您在該頁面上是否存在jQuery(使用該庫會更容易)? 也許本教程會有所幫助: http : //www.4guysfromrolla.com/articles/120810-1.aspx

具體來說,您應該使用類似

headerChkBox onclick =“ changeCheckboxes(this)”

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

希望能幫助到你

如果您想使用JavaScript進行操作,

您應該使用復選框的工具提示屬性來保存記錄的ID。 例如 :

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

然后,您應該在點擊標題復選框時使用javascript代碼。

<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>

最后,在“代碼隱藏”中。

要獲取選定的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM