DataGrid中RadioButtonList的问题,困扰N天了,请帮忙看下

claus2001 2004-11-22 11:36:23
先谢谢sonkey(小恐龙)那天的回答~~

代码如下
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
System.Web.UI.WebControls.RadioButtonList myRBL = new RadioButtonList();
string[] rblText = new string[]{"1","2"};
//string[] rblValue = new string[]{"1","2"};
myRBL.DataSource = rblText;
myRBL.DataBind();
myRBL.Attributes.Add("id","rbl" + e.Item.Cells[0].Text);
myRBL.Attributes.Add("RepeatDirection","Horizontal");
e.Item.Cells[1].Controls.Add(myRBL);
}

private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0;i<DataGrid1.Items.Count;i++)
{
String name="rb1"+DataGrid1.Items[i].Cells[0].Text;
RadioButtonList radio=(RadioButtonList)DataGrid1.Items[i].Cells[1].FindControl(name);
String val=radio.SelectedItem.Text;
Response.Write(name);
}
}

可以生成DataGrid中每行的RadioButtionList,但是取值时却不能,我看了一下html的源码,Radio的id都是DataGrid1__ctl2__ctl0_0这样的,而且RadioButtonList的排列还是垂直的没有水平
myRBL.Attributes.Add("id","rbl" + e.Item.Cells[0].Text);
myRBL.Attributes.Add("RepeatDirection","Horizontal");
这两句好像都没有起作用

我就是想实现在DataGrid每行都通过RadioButtonList生成一组Radio然后动态赋予它id,再在后台通过id把所选中的radio item的value或者text取出来.
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2004-11-22
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=60B8B07E-A3DF-4AE5-B5F8-71204C7C8793

claus2001 2004-11-22
  • 打赏
  • 举报
回复
net_lover(孟子E章)
我不是要实现单选,我给你发了留言.
孟子E章 2004-11-22
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=18B9552B-6E7E-46DD-BEDA-2436C418BEE8
claus2001 2004-11-22
  • 打赏
  • 举报
回复
垂直问题解决了
用myRBL.RepeatDirection=RepeatDirection.Horizontal;
现在就剩ID的问题了
有谁知道原因和解决的办法吗.分不够可以再加
claus2001 2004-11-22
  • 打赏
  • 举报
回复
net_lover(孟子E章)你还在吗?又有点问题麻烦下了
我分前台后台写的
asp中的
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="orderid"></asp:BoundColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:RadioButtonList ID="RadioButtonList1" RepeatDirection="Horizontal" Runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

.cs中这样写的
private void Button1_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem dataItem in DataGrid1.Items)
{
String t = ((RadioButtonList)dataItem.FindControl("RadioButtonList1")).SelectedItem.Text;
Response.Write(t);
}
}

可以却提示
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 123: foreach(DataGridItem dataItem in DataGrid1.Items)
行 124: {
行 125: String t = ((RadioButtonList)dataItem.FindControl ("RadioButtonList1")).SelectedItem.Text;
行 126: Response.Write(t);
行 127: }

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧