如何使用ASP.net在Listview Itemdatabound事件中获取输入类型Button

本文关键字:获取 输入 类型 Button 事件 Itemdatabound ASP 何使用 net Listview | 更新日期: 2023-09-27 18:20:45

我正在处理一个asp.net应用程序事件,我正在绑定事件。会话中有一些值,我已经在datatable中分配了这些值。现在我希望,如果绑定的列表视图和会话ProductID中的ProductID匹配,那么按钮应该被禁用。这是我绑定Listview的代码。

dt = new ProductImages().SelectProductsWithImages();
if (dt.Rows.Count > 0)
{
    ListFeatured.DataSource = dt;
    ListFeatured.DataBind();
}

在列表视图中有一个html类型的按钮,如:

<input type="button" class="button_type_4 bg_scheme_color r_corners tr_all_hover color_light mw_0 m_bottom_15" 
       value="Add to Cart" id="btnCart" onclick="Cart(this);" />

我想访问这个按钮。为了访问这个按钮,我使用了以下

protected void ListFeatured_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    try
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            Label lblpid = (Label)e.Item.FindControl("lblPid");
            long pid = Convert.ToInt64(lblpid.Text);
            Control btnCart = (Control)e.Item.FindControl("btnCart");
            var b = e.Item.FindControl("btnCart");
            DataRow[] row = dtDetails.Select("ProductID=" + pid);
            if (row.Length > 0)
            {
                //b.Visible=
            }
        }
    }
    catch (Exception ex)
    {
        throw (ex);
    }
}

但是输入类型的按钮的值总是为null。请帮我这里的人。

如何使用ASP.net在Listview Itemdatabound事件中获取输入类型Button

您需要通过添加runat="server" 将此html按钮作为服务器控件

<input type="button" runat="server" class="button_type_4 bg_scheme_color r_corners tr_all_hover color_light mw_0 m_bottom_15" value="Add to Cart" id="btnCart"  onclick="Cart(this);" />

在后面的代码中,您可以通过将该控件强制转换为HtmlInputButton类来找到该控件

HtmlInputButton btnCart = (HtmlInputButton)e.Item.FindControl("btnCart");