代码之家  ›  专栏  ›  技术社区  ›  Wonko the Sane

ASP.NET ListView上的javascript函数\u itemCreated

  •  1
  • Wonko the Sane  · 技术社区  · 14 年前

    我正在尝试对ASP.NET ListView的EditItemTemplate中的一组控件设置一些客户端属性。

    例如,如果EditItemTemplate包含如下内容:

    <tr id='phoneRow'>
      <td>
        <asp:Label ID="lblPhoneLabel" runat="server" Text="Phone Number: " />
      </td>
      <td>
        <asp:Label ID="lblPhoneNumber" runat="server" 
                   Text='<%# Bind("PhoneNumber") %>' />
      </td>
    </tr>
    

    我只想在有电话号码的情况下显示该行,因此javascript类似于:

    function showOrHidePhoneRow(rowId, labelId)
    {
        var row = document.getElementById(rowId);
        var label = document.getElementById(labelId);
    
        if (label.value == "")
            row.style.visibility = "collapsed";
        else
            row.style.visibility = "visible";
    }
    

    我试图在代码隐藏中添加对该函数的调用,但我不确定如何添加。上船似乎太迟了。

    protected void lvwExample_ItemCreated(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ListViewDataItem item = e.Item as ListViewDataItem;
            if (item.DisplayIndex == lvwExample.EditIndex)
            {
                Label label = item.FindControl("lblPhoneNumber") as Label;
                if (label != null)
                {
                    // Get here, but row always visible
                    label.Attributes.Add("onload",
                        "showOrHidePhoneRow('phoneRow', '" + label.ClientId + "');");
                }
            }
        }
    }
    

    任何指点都会非常感激。

    谢谢, WTS

    1 回复  |  直到 14 年前
        1
  •  1
  •   themarcuz    14 年前

    Protected Sub ListView1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
        Dim myLabel As Label = e.Item.FindControl("lblPhoneNumber")
        If Not myLabel Is Nothing Then
            e.Item.Visible = IIf(myLabel.Text = "", True, False)
        End If
    End Sub