在列表视图中查找控件
问题描述:
通过在GridView中按下按钮,我需要在ListView中查找控件。在列表视图中查找控件
<ItemTemplate>
<td>
<asp:Label ID="lblMarketLVBalanceHeader" runat="server" Text="Balance: "></asp:Label>
</td>
<td>
<asp:Label ID="lblMarketLVBalanceValue" runat="server" Text='<%# Bind("Money", "{0:####}$") %>'></asp:Label>
</td>
</ItemTemplate>
代码背后:
protected void GVMarketItems_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Buy"))
{ GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
/* string itemID = row.Cells[0].Text;
string itemName = row.Cells[1].Text;
string itemCostStr = row.Cells[3].Text; */
string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;
}
代码似乎找到,但我有当我试图找到控制“对象引用不设置到对象的实例”。
string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;
对DetailsView做了同样的事情,它确实如此。ListView出了什么问题?
UPD:试图让列表视图
ListViewDataItem curBalanceLV = LVMarketBalanceShow.Items[0];
string curBalanceStr =((Label)curBalanceLV.FindControl("lblMarketLVBalanceValue")).Text;
的第一FOW但得到一个错误 “索引超出范围。”
答
我想你想找到特定行内的控件。
string curBalanceStr = ((Label)row.FindControl("lblMarketLVBalanceValue")).Text
答
做了同样到DetailsView控件,它是确定..这有什么错 的ListView?
一个DetailsView用于在同一时间与一行来解决这样你就可以直接调用DetailsView控件,但GridView控件和ListView FindControl()
是为了显示多个记录,您的标记,你里面<ItemTemplate />
定义仅仅是为每个模板行。您将能够在每行内部的模板中找到您定义的控件。
对,没有提到,因为listview显示单行.. – RaShe
@RaShe没关系,如果它只显示单行。该控件适用于多行。考虑一个'List'。即使列表只有一个字符串,也不能对列表执行字符串操作。您必须先检索一个项目,然后对该项目执行任何字符串操作。如果你总是只有一行,那么你应该坚持DetailsView或检索行,然后尝试访问控件。 –
我明白了。 现在我试图获取该行 ListViewDataItem curBalanceLV = LVMarketBalanceShow.Items [0]; string curBalanceStr =((Label)curBalanceLV.FindControl(“lblMarketLVBalanceValue”))。 但我有一个错误“索引超出范围”。 – RaShe