ASP.NET Find Dropdown Value داخل عنصر التحكم في مكرر الجزء الثاني

StackOverflow https://stackoverflow.com/questions/932503

  •  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:

  1. http://msdn.microsoft.com/en-us/library/ms178472.aspx.
  2. http://www.15seconds.com/isue/20102.htm.
  3. http://www.beansoftware.com/asp.net-tutorials/page-life-cycle.aspx.
  4. صورة دورة حياة صفحة ASP.NET
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top