【问题标题】:How To Get Value From ListView如何从 ListView 中获取价值
【发布时间】:2014-03-31 15:29:42
【问题描述】:

我有代码

<head>
    <title><%=txtTitle.Text</title>
</head> 

<asp:HiddenField ID="txtTitle" runat="server" />

<asp:ListView ID="lvDetNews" runat="server" DataSourceID="sdsBerita">
    <ItemTemplate>
        <asp:HiddenField ID="HFcari" runat="server" Value='<%# Eval("judul_berita") %>' />
        <h2><%# Eval("judul_berita") %></a></h2>            
    </ItemTemplate>
</asp:ListView>

如何从 Listview 中获取 Value HiddenField?

我正在尝试这个。但无法显示

protected void Page_Load(object sender, EventArgs e)
{
    HiddenField tt = (HiddenField)lvDetNews.FindControl("HFcari");
    txtTitle.Value = "tess" + tt;
}

【问题讨论】:

    标签: c# asp.net listview


    【解决方案1】:
    protected void Page_Load(object sender, EventArgs e)
    {
        HiddenField tt = (HiddenField)lvDetNews.FindControl("HFcari");
        txtTitle.Value = "tess" + tt.Value;
    }
    

    更新: 您收到该错误是因为列表视图尚未绑定,所以我认为最好的方法是在 ItemDataBound 事件上执行所有这些操作。您会发现如下隐藏字段:

      <asp:ListView ID="lvDetNews" runat="server" DataSourceID="sdsBerita"   OnItemDataBound="lvDetNews_ItemDataBound">
        <ItemTemplate>
            <asp:HiddenField ID="HFcari" runat="server" Value='<%# Eval("judul_berita") %>' />
            <h2><%# Eval("judul_berita") %></a></h2>            
        </ItemTemplate>
    </asp:ListView>
    
    protected void lvDetNews_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
             HiddenField tt = (HiddenField)e.Item.FindControl("HFcari");
              txtTitle.Value = "tess" + tt.Value;
        }
    }
    

    【讨论】:

    • pssst,.Value 属性。
    • 谢谢你的回答.. 但是同样,这不能只显示错误消息“对象引用未设置为对象的实例”再次有替代答案..
    • @user3401322,我已经更新了我的答案。请检查。
    【解决方案2】:

    您需要如下更改您的代码

    protected void Page_Load(object sender, EventArgs e)
        {
            HiddenField tt = (HiddenField)lvDetNews.FindControl("HFcari");
            txtTitle.Value = "tess" + tt.Value;
        }
    

    【讨论】:

      【解决方案3】:

      如果你想在页面加载中获得价值,你应该知道行号

      var hiddenFld = this.lvDetNews.Items[<row_index>].FindControl("HFcari") as HiddenField;
      string value = hiddenFld.Value();
      

      否则你必须在ItemDataBound事件中这样做

      <head>
          <title><%=txtTitle.Text</title>
      </head> 
      
      <asp:HiddenField ID="txtTitle" runat="server" />
      
      <asp:ListView ID="lvDetNews" runat="server" DataSourceID="sdsBerita"   OnItemDataBound="lvDetNews_ItemDataBound">
          <ItemTemplate>
              <asp:HiddenField ID="HFcari" runat="server" Value='<%# Eval("judul_berita")     %>' />
              <h2><%# Eval("judul_berita") %></a></h2>            
          </ItemTemplate>
      </asp:ListView>
      

      代码:

      protected void lvDetNews_ItemDataBound(object sender, ListViewItemEventArgs e)
      {
          if (e.Item.ItemType == ListViewItemType.DataItem)
          {
              var hiddenFld = e.Item.FindControl("HFcari") as HiddenFiled;
              string value = hiddenFld.Value();
              // ...
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 2018-04-07
        • 2021-12-26
        • 1970-01-01
        • 2016-08-24
        • 2012-11-29
        • 2018-08-20
        相关资源
        最近更新 更多