如何在按钮点击事件和转发器中使用转发器查找控件在asp.net C#中的gridview中放置

时间:2012-11-20 07:40:46

标签: c# asp.net button gridview repeater

我需要检查radionbutton是否被检查或者不需要将其值赋予变量。

如何循环遍历转发器中的radioButtonList,以检查用户在按钮单击时选择True还是false,并将按钮放在gridview和repeater之外。

我试过这个:  protected void btnsave_Click(object sender,EventArgs e)         {             if(!Page.IsValid)                 返回;             int 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&lt; gridMainSurveyQuestion.Rows.Count; i ++) 第90行:{ 第91行:GridView网格=(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

你可以纠正吗

1 个答案:

答案 0 :(得分:1)

首先需要遍历GridView Rows以查找每个转发器。然后从每个中继器找到每个radiobuttonlist,如下所示。

  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...
                    }
                }
            }
        }
  }

快乐编码......;)

编辑:删除了复选框&amp;根据提问者的要求放置radiututtonlist。

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