<asp:datalist id="DataList1" runat="server" Width="100%" Font-Size="Smaller">
<ItemTemplate>
<FONT face="宋体">
<P>
<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: }
那么这种情况该怎么办呀?高手们帮帮小弟吧!
<ItemTemplate>
<FONT face="宋体">
<P>
<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: }
那么这种情况该怎么办呀?高手们帮帮小弟吧!
加上
try
{
Message.Text=Message.Text+Name.Text+tmpList.SelectedItem.Text;
}
catch
{}在后台求取控件时,虽然该控件也许求取不到,但只要你不使用它,是不会出现错误的。
你也可以用if(xxx != null){执行}这样的方式