在GridView中,一个单元格内有3个RadioButton(在同一组Group)当我点击GridView外面一个button的时候想判断这个单元格内哪个RadioButton是选中状态以下是我的代码
foreach (GridViewRow row in GridViewDemo.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
foreach(Control obj in row.Controls)
{
if (obj.GetType().BaseType.Name.ToUpper().Contains("RADIOBUTTON"))
{
}
}
}
}
在最后一个if中却怎么都找不到任意一个RadioButton.请指教什么地方不对了,谢谢.
foreach (GridViewRow row in GridViewDemo.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
foreach(Control obj in row.Controls)
{
if (obj.GetType().BaseType.Name.ToUpper().Contains("RADIOBUTTON"))
{
}
}
}
}
在最后一个if中却怎么都找不到任意一个RadioButton.请指教什么地方不对了,谢谢.
解决方案 »
- ASP.NET WEB.CONFIG 配置问题 不管不与不会都来看看
- 在IE7,IE8中ASP.NET HTML页面DIV显示位置错误问题
- .Net 2.0网上传绑定域名后出错……
- 请教在WebForm中如何用C#来编写代码实现将DataSet中的数据导入到Excel中去?
- 请问我如何向已经有数据的GridView1中追加数据集
- 大型调查投票的设计,求助! 100分
- 请教关于null的一个问题,搞不定,在线
- 求大神讲解下怎么用.net实现监控交换机网络流量【谢谢了】
- 无法创建ASP。NET WEB项目?
- ★★哪里有ERP相关的网站(关于ASP.NET的),范例?★★
- 控件不显示内容(回复就有分)
- 50分 程序问题。急请高人解答。。。。
要不就得Findcontrol三次了
{
//todo
}
{
if (obj.GetType().BaseType.Name.ToUpper().Contains("RADIOBUTTON"))
{
}
}每次这个obj.GetType().ToString()都是输出
"System.Web.UI.WebControls.DataControlFieldCell"
而不是期望的
System.Web.UI.WebControls.RadioButton
{
radiobuttonlist rbl= row.findcontrol("radiobuttonlist1") as radiobuttonlist;
if(rbl!=null)
for(int i=0;i<rbl.items.count;i++)
{
if(rbl.items.selected)
{//剩下的你肯定知道怎么写了}
}
}
Rows 属性(集合)用来存储 GridView 控件中的数据行
Rows.Controls 这个集合中应该是什么呢,想一想吧。
你也说了打印出的是"System.Web.UI.WebControls.DataControlFieldCell"代码修改为如下 foreach (GridViewRow row in GridViewDemo.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
RadioButton rb = row.FindControl("控件名称1");
RadioButton rb = row.FindControl("控件名称2");
RadioButton rb = row.FindControl("控件名称3");
//得到三个单选按钮后就可以判断了
//判断代码略...
}
}注意:代码没有在编译器执行,请自行验证修改
<Columns>
<asp:TemplateField HeaderText="Select" ShowHeader="False">
<ItemTemplate>
<asp:RadioButton ID="RadioButton1" runat="server" Text="RadioButton1" GroupName="RadioGroup" />
<asp:RadioButton ID="RadioButton2" runat="server" Text="RadioButton2" GroupName="RadioGroup" />
<asp:RadioButton ID="RadioButton3" runat="server" Text="RadioButton3" GroupName="RadioGroup" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="insertTime" HeaderText="Time" />
</Columns>
</asp:GridView>
<br />
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
protected void Button2_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
foreach (Control obj in row.Cells[0].Controls) //Cell[0]标明是GridView的第一列
{
if (obj is RadioButton)
{
if((obj as RadioButton).Checked)
Response.Write(obj.ID);
}
}
}
} }
一语惊醒梦中人!(因为我的GridView Demo只有一个单元格数据,里面有3个radiobutton),图快,方才光记得在row中找,忘记定位cells了,真是粗心..经过Debugrow.Cells[0]
{System.Web.UI.WebControls.DataControlFieldCell}row.Cells[1]
{System.Web.UI.WebControls.DataControlFieldCell}row.Cells[1].Controls
{System.Web.UI.ControlCollection}
Count: 3//看到这里我就有了一丝惊喜row.Cells[1].Controls[1]
{Text = "金融、保险、证券、投资" Checked = false}
[System.Web.UI.WebControls.RadioButton]: {Text = "金融、保险、证券、投资" Checked = false}
Jack_xiao 你是对的,同时也感谢关注此问题的朋友!