0

我需要检查是否选中了单选按钮,或者不需要将其值设置为变量。

我如何遍历转发器中的 radioButtonList 以检查用户在按钮单击时选择 True 或 false 并且按钮放置在 gridview 和转发器之外。

我试过这个:protected void btnsave_Click(object sender, EventArgs e) { if (!Page.IsValid) return; 整数 tcounter = 0; int fcounter = 0;

        for (int i = 0; i < gridMainSurveyQuestion.Rows.Count; i++)
        {
            GridView grid = (GridView)gridMainSurveyQuestion.Rows[i].FindControl("RptQuestions");

            Repeater repea = (Repeater)grid.Rows[i].FindControl("RptQuestions");
            for (int j = 0; j < repea.Items.Count; j++)
            {
                RepeaterItem currentitem = repea.Items[j];
                RadioButtonList rlist = (RadioButtonList)currentitem.FindControl("rblanswer");
                if (rlist.SelectedItem.Value == "0")
                {
                    fcounter++;
                    lblfalse.Text = fcounter.ToString();
                }
                if (rlist.SelectedItem.Value == "1")
                {
                    tcounter++;
                    lbltrue.Text = tcounter.ToString();
                }
            }
        }
    }

但显示错误:无法将“System.Web.UI.WebControls.Repeater”类型的对象转换为“System.Web.UI.WebControls.GridView”。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidCastException:无法将“System.Web.UI.WebControls.Repeater”类型的对象转换为“System.Web.UI.WebControls.GridView”类型。

源错误:

第 89 行:for (int i = 0; i < gridMainSurveyQuestion.Rows.Count; i++) 第 90 行:{ 第 91 行:GridView grid = (GridView)gridMainSurveyQuestion.Rows[i].FindControl("RptQuestions"); 第 92 行:第 93 行:Repeater repea = (Repeater)grid.Rows[i].FindControl("RptQuestions");

源文件:C:\Users\madiha.rahman\Desktop\PICG_SurveyModule\PICG_SurveyModule\Survey.aspx.cs 行:91

你能改正吗

4

1 回答 1

1

您首先需要遍历 GridView Rows 以查找每个中继器。然后从每个中继器中找到每个单选按钮列表,如下所示。

  protected void Button1_Click(object sender, EventArgs e)
  {
        foreach (GridViewRow gvRow in gvTemp.Rows)
        {
            Repeater repeater = (Repeater)gvRow.FindControl("repeater1");

            foreach (RepeaterItem repItem in repeater.Items)
            {
                RadioButtonList rbList = (RadioButtonList)repItem.FindControl("radiobuttonlist1");

                foreach (ListItem item in rbList.Items)
                {
                    if (item.Selected)
                    {
                        //code for selected items goes here...
                    }
                    else
                    {
                        //code for not selected items goes here...
                    }

                    if (item.Value == "0")
                    { 
                        //code for items with value == "0" goes here...
                    }

                    if (item.Value == "1")
                    {
                        //code for items with value == "1" goes here...
                    }
                }
            }
        }
  }

快乐编码……;)

编辑:删除复选框并根据提问者的要求放置单选按钮列表。

编辑:根据提问者的要求,添加了遍历单选按钮列表中每个单选按钮的内部 foreach 循环。

于 2012-11-20T07:53:07.093 回答