【问题标题】:Get radio button list responses with data source asp.net使用数据源 asp.net 获取单选按钮列表响应
【发布时间】:2017-02-11 03:56:17
【问题描述】:

我有一个单选按钮列表,它位于 asp 中继器内。它看起来像这样:

<asp:Repeater runat="server" ID="surveyRepeater">
    <ItemTemplate>
        <h3><%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).questionNum%>
                . <%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).question%>
        </h3>
        <asp:RadioButtonList ID="surveyRadioList"
            DataTextField="questionText"
            DataValueField="valueOfQuestion" runat="server"
            DataSource="<%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).answerOptions %>"
            RepeatDirection="Vertical">
        </asp:RadioButtonList>
    </ItemTemplate>
</asp:Repeater>

这会正确显示单选按钮列表,但是我无法弄清楚如何在后面的代码中获取响应。

我可以通过这样做获得单选按钮列表:

foreach (RepeaterItem item in surveyRepeater.Items)
{
    // Checking the item is a data item
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
    {
        var rdbList = item.FindControl("surveyRadioList") as RadioButtonList;
        if (rdbList != null)
        {
            retList.Add(rdbList.SelectedValue);
        }
    }
}

然而,即使它找到了所有 8 个单选按钮列表,所选值始终只是一个空的 "" 字符串。无论我选择哪个选项,所选索引也始终为 -1。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我认为您在每个 PostBack 上重新绑定 Repeater。您需要将其包装在 IsPostBack 支票中。

    if (!Page.IsPostBack)
    {
        surveyRepeater.DataSource = Common.LoadFromDB();
        surveyRepeater.DataBind();
    }
    

    如果您不这样做,则会重新创建 RadioButtonLists,并且它们的选择会丢失。

    【讨论】:

    • 是的,就是这样。哦,我的上帝 3 小时寻找那个:P 非常感谢
    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2016-02-28
    • 2011-10-21
    相关资源
    最近更新 更多