如何在Code Behind中更改ListView元素的值

时间:2010-04-04 12:00:13

标签: asp.net code-behind

我正在尝试使用Listview创建一个表,我正在使用的一个字段应该显示一个指向所显示数据的更详细视图的超链接,我想要的方法是使用{{1在该项的ID上,然后将值更改为附加查询字符串的详细视图页面的超链接,问题是我不知道如何将该数据重新插入到listview字段中,像这样:

FindControl

请记住,我在ASP.net中仍然是一名业余爱好者,如果有任何一个看起来太复杂,那么我更不容易做到这一点,我不知道。

谢谢

3 个答案:

答案 0 :(得分:1)

我没有足够的声誉留下评论或编辑帖子,但Richard Harrison的帖子中的代码示例存在一些问题:

  protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e)                  
  {
        try
        {
            HyperLink ViewLinkLabel = (HyperLink)e.Item.FindControl("ViewLinkLabel");
            ViewLinkLabel.NavigateUrl = "http://www.example.com/";
        }
        catch
        {

        }
    }

理想情况下,您还应该在使用之前检查ViewLinkLabel是否为空。

此外,假设ViewLinkLabel控件是HyperLink,但问题是这实际上是一个Label控件。

答案 1 :(得分:0)

将标签更改为超链接并使用listview上的OnItemDataBound事件来修改元素:类似于。

  protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e)                  
  {
        try
        {
            HyperLink ViewLinkLabel = (HyperLink)e.Item.FindControl("ViewLinkLabel");
            lnkEvent.NavigateUrl += "http://required.url;
        }
        catch
        {

        }
    }

ListView.ItemDataBound Event了解更多详情

答案 2 :(得分:0)

是的,你在这里犯了一些错误。首先,如果你要这样做,你会想要使用<asp:Hyperlink>而不是<asp:Label>

此外,您不必尝试在后面的代码中找到控件并设置其值,您可能会在标记中使用数据绑定语句。

这看起来像这样:

<ItemTemplate>
  <td>
    <asp:HyperLink ID="ViewLinkLabel" runat="server" Text="More details"
         NavigateUrl='<%# string.Format("~/DetailPage.aspx?ID={0}", Eval("RecordID")) %>' />
  </td> 
</ItemTemplate>

您所指的模式称为主/详细信息。这意味着您有一个主列表,可让您深入了解详细信息。有很多教程可以解释在官方asp.net网站上设置它的各种方法:

它们是在asp.net 3.5发布之前编写的,因此它们不包括listview控件,但是它们将向您解释如何设置master / detail以及数据绑定语法的工作原理。如果您通过该数据访问系列中的前25个教程,那么您将非常了解许多asp.net功能的工作原理。它使用的数据访问技术有点过时,但它很容易入手。