0

データリストを含むasp.netがあり、そのitemtemplate内にradiobuttonlistが含まれています

これが私のASPXコードです:

<asp:DataList ID="dtlQuestions" runat="server" RepeatDirection="Vertical" DataKeyField="ID" OnItemDataBound="dtlQuestions_ItemDataBound">
    <ItemTemplate>
        <asp:Label ID="q" runat="server" Text='<%# Eval("Question") %>'></asp:Label>
        <asp:RadioButtonList ID="dtlAnswers" runat="server" ValidationGroup='Bla' RepeatDirection="Horizontal" RepeatColumns="5" CssClass="radioButtonList">
        </asp:RadioButtonList>
    </ItemTemplate>
</asp:DataList>

コード ビハインドには、各アイテムにアイテムのリストが含まれる「Questons」のリストがあります。質問を Datalist にバインドし、質問内の各回答を radioButtonList にバインドします。

C# コードは次のとおりです。

protected void dtlQuestions_ItemDataBound(object sender, DataListItemEventArgs e)
{
    SurveyQuestion drv = e.Item.DataItem as SurveyQuestion;
    RadioButtonList RadioButtonList1 = (RadioButtonList)e.Item.FindControl("dtlAnswers");
    foreach (QuestionAnswer a in drv.QuestionAnswers)
    {
        ListItem i = new ListItem();
        i.Text = a.Answer;
        i.Value = a.Answer;
        RadioButtonList1.Items.Add(i);
    }
}

今私の問題は、ボタンをクリックして戻ってすべてのラジオボタンを読み、チェックされているかどうかを確認したいときです。ラジオボタンをループすることはできますが、すべてが選択されていません。

ここにボタン送信クリックがあります

protected void btnSubmit_Click(object sender, EventArgs e)
{
    DataList dtlQuestions = Page.FindControl("dtlQuestions") as DataList;

    foreach (DataListItem question in dtlQuestions.Items)
    {
        RadioButtonList rdList = question.FindControl("dtlAnswers") as RadioButtonList;

        foreach (ListItem answer in rdList.Items)
        {
            bool isSelected = answer.Selected;
        }
    }
}
4

2 に答える 2

0

まず、この問題を共有していただきありがとうございます。これは、回答の質問を実装する方法を開発して問題を解決するのに役立ちます。ネストされたリピーターを試してみましたが、ラジオボタングループに問題がありました。この記事は私を助けてくれます。そのため、保存時に問題に直面するように実装した後。上記の保存コードが正確に機能していません。私はソリューションが好きで、asp.net 開発者コミュニティと共有しています。感謝

 count = 0;
        if (dtlQuestions.Items.Count > 0)
        {
    foreach (DataListItem li in dtlQuestions.Items)
            {       
                RadioButtonList rdList = li.FindControl("dtlAnswers") as RadioButtonList;
                HiddenField hnQuestionsid = (HiddenField)li.FindControl("hnQuestionsid");
                foreach (ListItem answer in rdList.Items)
                {
         bool isSelected = answer.Selected; if (isSelected){ int slval = Convert.ToInt32(answer.Value); InsertSurveyData(Convert.ToInt32(hnSurveyid.Value), Convert.ToInt32(hnQuestionsid.Value), Convert.ToInt32(slval));}}}}
于 2013-07-11T10:40:28.883 に答える
0

ああああ分かった。Page_Loadi で、質問のリストを DataList の DataSource に追加していました。私の問題は、その部分に if(!Page.IsPostBack) を追加していなかったため、ボタンをクリックするたびにデータが再バインドされ、選択した値が失われることでした。:)

于 2013-07-09T10:12:32.360 に答える