ASP.NET Find Dropdown Value داخل عنصر التحكم في مكرر الجزء الثاني
-
06-09-2019 - |
سؤال
لقد كان إيف بعض الأسئلة حول هذا الموضوع، لا يزال لديك مشاكل.
أريد أن أجد القيم من عدد من عناصر تحكم Dropdown و TextBox داخل عنصر تحكم مكرر.
db.ConnectionString = SystemConnString
db.Open()
Dim selectedAdTitle As String = ""
Dim enteredAdFullName As String = ""
cmd.Parameters.Add(New SqlParameter("@TransactionID", TransactionID))
cmd.Parameters.Add(New SqlParameter("@AdTitle", selectedAdTitle))
cmd.Parameters.Add(New SqlParameter("@AdFullName", enteredAdFullName))
For i As Integer = 0 To myRepeater.Items.Count - 1
Dim AdTitle As DropDownList = DirectCast(myRepeater.Items(i).FindControl("AdTitle"), DropDownList)
Dim AdFullName As TextBox = DirectCast(myRepeater.Items(i).FindControl("AdFullName"), TextBox)
selectedAdTitle = AdTitle.Text
enteredAdFullName = AdFullName.Text
cmd.Parameters("@AdTitle").Value = selectedAdTitle
cmd.Parameters("@AdFullName").Value = enteredAdFullName
SQL = ""
SQL = SQL & "INSERT INTO InsuredPersons (TransactionID,Title,FullName) VALUES ("
SQL = SQL & "@TransactionID,"
SQL = SQL & "@AdTitle,"
SQL = SQL & "@AdFullName"
SQL = SQL & ")"
cmd.CommandText = SQL
cmd.Connection = db
cmd.ExecuteNonQuery()
Next
يبدو أن Adtitle و Adfllame لا يجلب القيم. لا يوجد خطأ حتى وجدوا السيطرة موافق. أدناه هو رمز ملف ASPX.
<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:DropDownList ID="AdTitle" runat="server">
<asp:ListItem Selected="True" Value="" Text=""/>
<asp:ListItem Selected="False" Value="Miss" Text="Miss"/>
<asp:ListItem Selected="False" Value="Ms" Text="Ms"/>
<asp:ListItem Selected="False" Value="Mrs" Text="Mrs"/>
<asp:ListItem Selected="False" Value="Mr" Text="Mr"/>
<asp:ListItem Selected="False" Value="Other" Text="Other"/>
</asp:DropDownList>
<asp:TextBox ID="AdFullName" runat="server"></asp:TextBox>
</ItemTemplate>
يحرر:
تم بناء مكرر على تحميل الصفحة
Dim repeatTimes((TotalAdInsured - 1)) As Integer
myRepeater.DataSource = repeatTimes
myRepeater.DataBind()
يتم directcast في زر النقر
Protected Sub continueButtonDetails_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles continueButtonDetails.Click
الجواب: اضطر إلى وضع ispostback حول بناء مكرر.
If Not IsPostBack() Then
Dim repeatTimes((TotalAdInsured - 1)) As Integer
myRepeater.DataSource = repeatTimes
myRepeater.DataBind()
End If
المحلول
أولا، أعتقد أنك تريد:
myDropDown.SelectedItem.Text
بدلا من
myDropDown.Text
أيضا لماذا لديك عنصرين؟ لم أكن أعرف أنك قد تفعل ذلك ...
هل تتفاعل مع أي من مربعات النصوص أو المنسدلة في أي نقطة أخرى خلال دورة حياة الصفحة؟
حاول وضع عملية إعادة النشر حول قاعدة بيانات المكرر. أعتقد أن ما يحدث هو تحميل عناصر التحكم الخاصة بك بشكل حيوي، وبالتالي ليس لديهم عرض مشاهد، وبالتالي فإن القيم ستكون دائما فارغة.
نصائح أخرى
تأكد من تشغيل رمزك في النقطة الصحيحة في دورة حياة الصفحة. إذا كنت تقوم بذلك في وقت مبكر جدا (على سبيل المثال في Oninit)، فلن يكون لها القيم من العميل بعد. حاول نقلها إلى حدث OnCommand () / Onsubmit () ونرى ما يحدث. فيما يلي بعض المراجع على دورة حياة صفحة ASP.NET: