سؤال

أحاول تعيين بعض الخصائص من جانب العميل على مجموعة من عناصر التحكم في EditItemTemplate من ASP.Net ListView.

على سبيل المثال ، إذا كان 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

هل كانت مفيدة؟

المحلول

المشكلة هنا هي أن ASP: التسمية يتم تقديم العلامة على أنها أ يولد علامة في HTML ... وحدث Onload غير موجود في العلامة ... لذلك أنت تقوم بتعيين السمة في الوقت المناسب ، لكنك تحاول التعامل مع حدث لا يتم إطلاقه! أعتقد أن Soution هو إكمال تجنب تنفيذ JavaScript في السيناريو الخاص بك واستخدام حدث الخادم للتعامل معه. شيء مثل

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

وبهذه الطريقة تتعامل مع كل عنصر واحد وتحديد ما إذا كنت تريد إخفاء صفك ، استنادًا إلى قيمة التسمية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top