献给大家拜早年,在问个问题大家发财呀

exee 2003-01-26 10:38:54
我在Page_Load中给PlaceHolder动态加了几个控件其中包括RadioButtonList

RadioButtonList rbl = new RadioButtonList();
rbl.Items.Add(new ListItem("C." + drKaonet["c"].ToString(), "C"));
.
.
.
PlaceHolder1.Controls.Add(rbl);
然后在button_click中找到控件RadioButtonList
写法如下
foreach(Control conAll in PlaceHolder1.Controls)
{
string type = conAll.GetType().Name.Trim();


switch(type)
{
case "RadioButtonList":
RadioButtonList rbl = (RadioButtonList)conAll;
.
.
.

}
但是却说对象未引用到实例,为什么???

...全文
33 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
exee 2003-01-26
  • 打赏
  • 举报
回复
我查处原因了就是arranswer没有赋值
糊涂呀!
结贴
exee 2003-01-26
  • 打赏
  • 举报
回复
to hgknight(江雨.net)
我赋值了呀 程序如下
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
arranswer = new ArrayList();
strConString = ConfigurationSettings.AppSettings["conString"];
strCmdString = "select * from exam_paper where paperid=1";
conKaonet = new SqlConnection (strConString);
conKaonet.Open();
cmdKaonet = new SqlCommand (strCmdString, conKaonet);
drKaonet = cmdKaonet.ExecuteReader();
while(drKaonet.Read())
{
switch(drKaonet["type"].ToString())
{

case "danx" :
PlaceHolder1.Controls.Add(new LiteralControl ( drKaonet["title"].ToString() + "(" + drKaonet["score"].ToString() + "分" + ")" + "<br>"));
RadioButtonList rbl = new RadioButtonList();
rbl.Items.Add (new ListItem("A." + drKaonet["a"].ToString(), "A"));
rbl.Items.Add (new ListItem("B." + drKaonet["b"].ToString(), "B"));
if(drKaonet["c"].ToString() != "")
{
rbl.Items.Add (new ListItem("C." + drKaonet["c"].ToString(), "C"));
}
if(drKaonet["d"].ToString() != "")
{
rbl.Items.Add (new ListItem("D." + drKaonet["d"].ToString(),"D"));
}
if(drKaonet["e"].ToString() != "")
{
rbl.Items.Add (new ListItem("E." + drKaonet["e"].ToString(), "E"));
}
if(drKaonet["f"].ToString() != "")
{
rbl.Items.Add (new ListItem("F." + drKaonet["f"].ToString(), "F"));
}

PlaceHolder1.Controls.Add(rbl);
PlaceHolder1.Controls.Add(new LiteralControl ( "<br>"));
arranswer.Add(drKaonet["answer"]);
break;
case "ydlj" :
PlaceHolder1.Controls.Add(new LiteralControl ( drKaonet["title"].ToString() + "<br>"));
strCmdString = "select * from subpaper where parentid=" + drKaonet["parent"].ToString();
conKaonet = new SqlConnection (strConString);
conKaonet.Open();
cmdKaonet = new SqlCommand (strCmdString, conKaonet);
drSubKaonet = cmdKaonet.ExecuteReader();
while(drSubKaonet.Read())
{
PlaceHolder1.Controls.Add(new LiteralControl ( drSubKaonet["title"].ToString() + "(" + drSubKaonet["score"].ToString() + "分" + ")" +"<br>"));
RadioButtonList rbl1 = new RadioButtonList();
rbl1.Items.Add (new ListItem("A." + drSubKaonet["a"].ToString(), "A"));
rbl1.Items.Add (new ListItem("B." + drSubKaonet["b"].ToString(), "B"));
if(drSubKaonet["c"].ToString() != "")
{
rbl1.Items.Add (new ListItem("C." + drSubKaonet["c"].ToString(), "C"));
}
if(drSubKaonet["d"].ToString() != "")
{
rbl1.Items.Add (new ListItem("D." + drSubKaonet["d"].ToString(), "D"));
}
if(drSubKaonet["e"].ToString() != "")
{
rbl1.Items.Add (new ListItem("E." + drSubKaonet["e"].ToString(), "E"));
}
if(drSubKaonet["f"].ToString() != "")
{
rbl1.Items.Add (new ListItem("F." + drSubKaonet["f"].ToString(), "F"));
}

PlaceHolder1.Controls.Add(rbl1);
PlaceHolder1.Controls.Add(new LiteralControl ( "<br>"));
arranswer.Add(drSubKaonet["answer"]);

}
drSubKaonet.Close();
break;



}

}
drKaonet.Close();


}

private void buttPut_Click(object sender, System.EventArgs e)
{
int i = 0,j = 0;
foreach(Control conAll in PlaceHolder1.Controls)
{

if(conAll is RadioButtonList)
{
RadioButtonList rbl=(RadioButtonList)conAll;
if(rbl.SelectedItem.Value == arranswer[i++].ToString())
Page.Response .Write ("Y");
else
Page.Response .Write ("N");

}

}
老大费心给看一下
arranswer已经赋值了
我可用循环将arranswer取出来
hgknight 2003-01-26
  • 打赏
  • 举报
回复
恐怕是arranswer的问题了
arranswer定义赋值了吗
exee 2003-01-26
  • 打赏
  • 举报
回复

行 163: {
行 164: RadioButtonList rbl=(RadioButtonList)conAll;
行 165: if(rbl.SelectedItem.Value == arranswer[i++].ToString())
行 166: Page.Response .Write ("Y");
行 167: else

if(rbl.SelectedItem.Value == arranswer[i++].ToString())
这行 未将对象引用设置到对象的实例。
exee 2003-01-26
  • 打赏
  • 举报
回复
to hgknight(江雨.net)
好我试试
hgknight 2003-01-26
  • 打赏
  • 举报
回复
foreach(Control conAll in PlaceHolder1.Controls)
{
if(conAll is RadioButtonList)
{
RadioButtonList rbl=(RadioButtonList)conAll;
//process rbl
}
}
exee 2003-01-26
  • 打赏
  • 举报
回复
type显示就是 RadioButtonList
是不是应该用PlaceHolder1.FindControl(PlaceHolder1.Controls[i].ID)
我试了试还是不行
贝贝壳壳 2003-01-26
  • 打赏
  • 举报
回复
把 type 显示出来看看是什么?
lbx1979 2003-01-26
  • 打赏
  • 举报
回复
string type ="";
type = conAll.GetType().Name.Trim();
试试
hgknight 2003-01-26
  • 打赏
  • 举报
回复
:)
hgknight 2003-01-26
  • 打赏
  • 举报
回复
在if(rbl.SelectedItem.Value == arranswer[i++].ToString())处设个断点,看看出问题时arranswer[i++]有没有值

62,266

社区成员

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

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

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

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