开发者

find control in listview

By pressing button in GridView i need to find control in 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>

Code Behind:

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开发者_如何学Python;
           string itemCostStr = row.Cells[3].Text; */
 string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;
}

Code seems find, but i have "Object reference not set to an instance of an object" when i'm trying to Find control.

string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;

Did the same to DetailsView and it was Ok.. What's wrong with ListView?

UPD: Trying to get first fow of listview

ListViewDataItem curBalanceLV = LVMarketBalanceShow.Items[0];
       string curBalanceStr =((Label)curBalanceLV.FindControl("lblMarketLVBalanceValue")).Text;

But getting an error "Index was out of range."


I think you want to find the control within the specific row.

string curBalanceStr = ((Label)row.FindControl("lblMarketLVBalanceValue")).Text


Did the same to DetailsView and it was Ok.. What's wrong with ListView?

A DetailsView is used to tackle with one row at a time so you can directly call FindControl() on the detailsview but gridview and listview are meant to display multiple records and your markup you define inside <ItemTemplate /> is just a template for each row. You'll be able to find the controls that you define in the template inside of each row.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜