通过在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做了同样的事情并且没问题.LinkView有什么问题?
UPD:试图获得listview的第一个目标
ListViewDataItem curBalanceLV = LVMarketBalanceShow.Items[0];
string curBalanceStr =((Label)curBalanceLV.FindControl("lblMarketLVBalanceValue")).Text;
但是收到错误“索引超出了范围。”
答案 0 :(得分:1)
我想你想在特定行中找到控件。
string curBalanceStr = ((Label)row.FindControl("lblMarketLVBalanceValue")).Text
答案 1 :(得分:1)
和DetailsView一样,它确实没问题。有什么问题 的ListView?
DetailsView用于一次处理一行,因此您可以直接在详细信息视图上调用FindControl()
,但gridview和listview用于显示多个记录,您在<ItemTemplate />
内定义的标记是只是每行的模板。您将能够找到您在每行内的模板中定义的控件。