C# 在listview项模板中查找相同类型的控件
我正在为我工作的员工申请报销费用。流程的一部分包含列表视图,新要求的一部分是,如果费用类型为“里程”,则用户将无法编辑该项目,只能删除并作为业务规则和英国税务原因等的一部分重新提交 无论如何,我希望能够在listview的每个项目中找到一个具有特定文本值的控件 我的想法如下,但这是不正确的,我知道为什么C# 在listview项模板中查找相同类型的控件,c#,.net,asp.net,listview,C#,.net,Asp.net,Listview,我正在为我工作的员工申请报销费用。流程的一部分包含列表视图,新要求的一部分是,如果费用类型为“里程”,则用户将无法编辑该项目,只能删除并作为业务规则和英国税务原因等的一部分重新提交 无论如何,我希望能够在listview的每个项目中找到一个具有特定文本值的控件 我的想法如下,但这是不正确的,我知道为什么 Label ExpenseTypeLabel = (Label)Expenses.FindControl("ExpenseTypeLabel"); string
Label ExpenseTypeLabel = (Label)Expenses.FindControl("ExpenseTypeLabel");
string ExpenseType = (ExpenseTypeLabel.Text.ToString());
if (ExpenseType == "Mileage")
{
foreach (ListViewDataItem thisItem in Expenses.Items)
{
ImageButton btnEdit = (ImageButton)thisItem.FindControl("btnEdit");
btnEdit.Enabled = false;
}
}
费用基于周末,当页面加载时,它会抛出我的EXECPION,因为它无法绑定到特定的单个控件,因为有许多ExpenseTypeLabel与当前周末(首先加载)的费用关联
我试图在这里完成的是在项目模板和交替项目模板中查找所有ExpenseTypeLabel,并禁用该费用项目的编辑功能。仅供参考,如果你想知道周末是费用,孩子是个人的费用项目
你们中的一个可爱的人能教我怎样才能做到这一点吗
谢谢
Matt使用OnItemDataBound事件如下
OnItemDataBound="Expenses_ItemDataBound"
protected void Expenses_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Label ExpenseTypeLabel = (Label)e.Item.FindControl("ExpenseTypeLabel");
string ExpenseType = (ExpenseTypeLabel.Text.ToString());
if (ExpenseType == "Mileage")
{
// disable button
}
}
}
绑定顺序和访问绑定项的时间非常重要;当您的子控件也具有绑定项时,尤其如此 如果要影响这些绑定控件的显示,通常可以从aspx端执行 创建从前端到服务器端函数的链接,然后向其传递所有必要的参数:
<asp:listview id='lstExpense'>
...
<asp:button id='btnEdit' enabled='<%#= isEnabled(((Expense)Container.DataItem).ExpenseType) %>' ...
...
<asp:listview>
不过,最好的解决方案是使用jQuery。不夸张,但您可以通过以下简单的方式完成所有这些:
$('.rowClass').each(function() {
if ($(this).find('.expenseTypeClass').val() == 'Mileage'))
$(this).find('.btnEditClass').attr('disabled','disabled');
})
是的,这让我走上了正确的道路,我想,它并不完全满足我的要求,但它让我更好地理解你可以得到答案:-)我不能因为某种原因而禁用按钮,我只能将可见属性设置为false,这让我觉得奇怪!再次感谢!这是一个很好的输入,谢谢,我的经理建议我避免使用AJAX以外的任何客户端脚本,因为它是托管代码。我希望jQuery在某个时候会很快学会,因为我问自己的许多问题都可以通过某种JS/jQ轻松完成
$('.rowClass').each(function() {
if ($(this).find('.expenseTypeClass').val() == 'Mileage'))
$(this).find('.btnEditClass').attr('disabled','disabled');
})