我使用下面的代码,但它不起作用..如果我选择标题复选框,那么所有其他复选框应该选择以及如何获取特定的行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 ..
答案 0 :(得分:3)
aspx代码...并获取特定ROW IN GRID VIEW的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;
}
}
}
答案 1 :(得分:2)
我建议您不要在服务器上执行此操作,而是在客户端上执行此操作。使用javascript。你在那个页面上有jQuery(这个库会更容易)吗?也许本教程将有所帮助:http://www.4guysfromrolla.com/articles/120810-1.aspx
答案 2 :(得分:0)
更具体地说,你应该使用像
这样的东西headerChkBox onclick =“changeCheckboxes(this)”
function changeCheckboxex(mainCheck)
{
$(yourDivContainer).children("INPUT[type='checkbox']").attr('checked', yourValue);
}
希望有所帮助
答案 3 :(得分:0)
如果你想使用javascript,
您应该使用checkBox的工具提示属性来保存记录的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>
最后,在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;
}