وظيفة JavaScript على ASP.NET ListView_itemcreated
-
02-10-2019 - |
سؤال
أحاول تعيين بعض الخصائص من جانب العميل على مجموعة من عناصر التحكم في 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
وبهذه الطريقة تتعامل مع كل عنصر واحد وتحديد ما إذا كنت تريد إخفاء صفك ، استنادًا إلى قيمة التسمية.