[英]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.