gpt4 book ai didi

c# - 如何通过ID操作itemtemplate中的items

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:24 24 4
gpt4 key购买 nike

现在我查看了 ItemTemplates 上的 MSDN,但我没有看到如何通过 ID 访问它们。

这是一个链接 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.itemtemplate.aspx

我认为这与访问代码隐藏或服务器脚本中的任何其他控件一样简单,但它不起作用。当我尝试通过 ID 引用它时,我不断收到“在当前上下文中不存在”错误。

我想做的是访问标题复选框的选中属性,并使用它来选择或取消选择 ItemTemplate 中的所有复选框。我还需要稍后是否选择它们以用于我的代码中的其他用途。

这是我在项目中使用的 gridview 的代码。

<asp:GridView ID="ApplicationsGridView" runat="server"
AutoGenerateColumns="True"
visible="true"
Font-Size="Smaller"
CellPadding="5"
Width="1200px"
BorderStyle="Solid"
BorderColor="Black"
OnDataBinding="ApplicationsGridView_DataBinding">
<%-- Add the checkboxes declaratively --%>
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox runat="server" ID="checkall" Checked="true" OnCheckedChanged="checkall_CheckedChanged" />
<script runat="server">
protected void checkall_CheckedChanged(object sender, EventArgs e)
{
if(checkall.checked)
{
foreach (GridViewRow row in ApplicationsGridView.Rows { }
}
}
</script>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="checkboxes" Checked="true" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="#d2d2f2" />
<HeaderStyle Font-Bold="true" BackColor="#052a9f" ForeColor="#eeeeff" Font-Size="Medium"/>
</asp:GridView>

最初,我曾尝试访问代码隐藏中的 ID。但即使尝试使用服务器脚本,它仍然无法找到它。如果不是通过 ID,如何访问复选框?

编辑: 这行得通 =)

    protected void checkall_CheckedChanged(object sender, EventArgs e)
{
//get whether its checked or not.
CheckBox theCheckBox = sender as CheckBox;

//check them all if checked. Uncheck them all when unchecked.
if (theCheckBox.Checked)
{
foreach (GridViewRow row in ApplicationsGridView.Rows)
{

CheckBox cb = row.FindControl("checkboxes") as CheckBox;
cb.Checked = true;
}
}

else if (!(theCheckBox.Checked))
{
foreach (GridViewRow row in ApplicationsGridView.Rows)
{

CheckBox cb = row.FindControl("checkboxes") as CheckBox;
cb.Checked = false;
}

}
}

最佳答案

当您循环遍历网格中的所有行时,您需要检查行的类型,如下所示:

foreach (GridViewRow row in ApplicationsGridView.Rows)
{
if(row.RowType == DataControlRowType.Header)
{
// Search for checkbox by ID here
CheckBox theCheckBox = row.FindControl("checkall") as CheckBox;

// Do whatever you need to do with checkbox here
}
}

更新:

你不需要搜索实际的控件,因为复选框发起了事件,所以你可以这样做:

protected void checkall_CheckedChanged(object sender, EventArgs e)
{
// Cast the sender of the event to a check box, because the check box created this event
CheckBox theCheckBox = sender as CheckBox;

if (theCheckBox.Checked)
{
foreach (GridViewRow row in ApplicationsGridView.Rows)
{
// Here is where you want to search for the existing check boxes, not create new ones
CheckBox cb = row.FindControl("checkboxes") as CheckBox;
cb.Checked = true;
}
}
}

关于c# - 如何通过ID操作itemtemplate中的items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com