سؤال

ولدي السيطرة مكرر على ASPX الصفحات المحددة مثل هذا:

<asp:Repeater ID="answerVariantRepeater" runat="server"
    onitemdatabound="answerVariantRepeater_ItemDataBound">
    <ItemTemplate>
        <asp:RadioButton ID="answerVariantRadioButton" runat="server"
            GroupName="answerVariants" 
            Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"/>
    </ItemTemplate>
</asp:Repeater>

لتسمح حدد فقط زر واحد في وقت ولقد استخدمت شكلا خدعة <لأ href = "http://www.codeguru.com/csharp/csharp/cs_controls/custom/article.php/c12371/" يختلط = "noreferrer"> هذه المقالة .

ولكن الآن عندما يتم إرسال النموذج أريد أن تحديد زر الراديو الذي محددا.

ويمكن أن أفعل هذا:

RadioButton checkedButton = null;

foreach (RepeaterItem item in answerVariantRepeater.Items)
{
    RadioButton control=(RadioButton)item.FindControl("answerVariantRadioButton");
    if (control.Checked)
    {
        checkedButton = control;
        break;
    }
}

ولكن نأمل أنه يمكن القيام به بطريقة أو بأخرى أبسط (ربما عن طريق LINQ إلى كائنات).

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

المحلول

ومنذ كنت تستخدم جافا سكريبت بالفعل للتعامل مع الحدث انقر فوق زر الاختيار على العميل، هل يمكن تحديث حقل مخفي مع القيمة المحددة في نفس الوقت.

ورمز من خادم عندئذ فقط الوصول إلى القيمة المحددة من الحقل المخفي.

نصائح أخرى

هل يمكن دائما استخدام Request.Form ل الحصول على زر الراديو المقدمة:

var value = Request.Form["answerVariants"];

وأعتقد أن القيمة الافتراضية المقدمة إلى هوية من <asp:RadioButton /> التي تم تحديدها، ولكن يمكنك دائما إضافة سمة قيمة - على الرغم من انها ليست رسميا خاصية <asp:RadioButton /> - وهذه ثم تكون القيمة المقدمة:

<asp:RadioButton ID="answerVariantRadioButton" runat="server"
    GroupName="answerVariants" 
    Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"
    value='<%# DataBinder.Eval(Container.DataItem, "SomethingToUseAsTheValue")%>' />

وأنا متأكد من أن الشيء الوحيد الذي يمكن استخدام LINQ إلى كائنات لهنا سيكون لاتخاذ الشروط من داخل حلقة foreach ونقلها إلى حيث شرط.

RadioButton checked = 
    (from item in answerVariantRepeater.Items
    let radioButton = (RadioButton)item.FindControl("answerVariantRadioButton")
    where radioButton.Checked
    select radioButton).FirstOrDefault();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top