<asp:datalist id="DataList1" runat="server" Width="100%" Font-Size="Smaller">
<ItemTemplate>
<FONT face="宋体">
<P>&nbsp;
<asp:Label id="lblName" runat="server"><%# DataBinder.Eval(Container.DataItem, "LastName") %></asp:Label></P>
<P>
<asp:RadioButtonList id="RadioButtonList1" runat="server" Font-Size="X-Small"></asp:RadioButtonList></P>
</FONT>
</ItemTemplate>
</asp:datalist>private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
DataList1.DataSource = CreateDataSource();
DataList1.DataBind();
} private DataTable CreateDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("LastName", Type.GetType("System.String"));
dt.Rows.Add(new object[] {"Smith"});
dt.Rows.Add(new object[] {"Jones"});
dt.Rows.Add(new object[] {"Clark"});
return dt;
} private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
RadioButtonList rbl=(RadioButtonList)e.Item.FindControl("RadioButtonList1");
ListItem MyCity1 = new ListItem("上海");
ListItem MyCity2 = new ListItem("南京");
ListItem MyCity3 = new ListItem("合肥");
rbl.Items.Add(MyCity1);
rbl.Items.Add(MyCity2);
rbl.Items.Add(MyCity3);
rbl.RepeatDirection = RepeatDirection.Horizontal;
} private void Bsave_Click(object sender, System.EventArgs e)
{
for(int j=0;j<DataList1.Items.Count;j++)
{
RadioButtonList tmpList = (RadioButtonList)DataList1.Items[j].FindControl("RadioButtonList1");
Label Name=(Label)DataList1.Items[j].FindControl("lblName");
Message.Text=Message.Text+Name.Text+tmpList.SelectedItem.Text;
}
}出现了如下的问题:
未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 57:  RadioButtonList tmpList = (RadioButtonList)DataList1.Items[j].FindControl("RadioButtonList1");
行 58:  Label Name=(Label)DataList1.Items[j].FindControl("lblName");
行 59:  Message.Text=Message.Text+Name.Text+tmpList.SelectedItem.Text;
行 60:  }
行 61:  }
那么这种情况该怎么办呀?高手们帮帮小弟吧!

解决方案 »

  1.   

    if(DataList1.Items[j].ItemType==ListItemType.Item||DataList1.Items[j].ItemType==ListItemType.AlternatingItem) 
    加上
      

  2.   

    简单的办法
    try
    {
    Message.Text=Message.Text+Name.Text+tmpList.SelectedItem.Text;
    }
    catch
    {}在后台求取控件时,虽然该控件也许求取不到,但只要你不使用它,是不会出现错误的。
    你也可以用if(xxx != null){执行}这样的方式
      

  3.   

    动态天加的控件找不到的,用,request.form[]取直
      

  4.   

    感觉好象根本就没有找到RadioButtonList1和lblName这个控件!那么该如何做才能找到它们!大哥们,救救小弟吧!