0

我一直在做一个项目,因为我遇到了一个问题,因为我里面有一个中继器和单选按钮列表,我想从我的数据库中填充单选按钮列表,但是我收到一个错误,因为对象引用未设置为实例一个东西。

aspx code
  <asp:Repeater ID="Repeater1" runat="server"OnItemDataBound="fillRepeater_onitembound">
        <HeaderTemplate>

        </HeaderTemplate>
        <AlternatingItemTemplate>

        </AlternatingItemTemplate>
        <ItemTemplate>
            <table style="width:1100px">
                <tr style="width:1100px">
            <asp:Label ID="lbl_teachername" runat="server" Text='<%#Eval("teachername") %>' ></asp:Label>
                       <asp:Label ID="lbl_teachercode" runat="server" Text='<%#Eval("teachercode") %>' style="display:none;" ></asp:Label>

                    </tr>
                <br />
                <tr>
                    <td style="width:150px">
                    <asp:Image ID="img_teacher" runat="server" ImageUrl="~/Images/staff.png" Height="100px" Width="100px"/>
                        </td>
                    <td >
                        <asp:RadioButtonList ID="radioatt" runat="server" OnSelectedIndexChanged="radioatt_OnSelectedIndexChanged" AutoPostBack="true" >

                        </asp:RadioButtonList>
                    </td>
                </tr>
                <tr>
                    <td>

                    </td>

                </tr>

                </table>
        </ItemTemplate>
    </asp:Repeater>

 c# code

 protected void fillRepeater_onitembound(object sender,RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {

        sql = "select Description,AttendanceCode from tblattendancecodes";
        ds = obj.openDataset(sql);
        ListItem li;

        RadioButtonList rbtl = (RadioButtonList)e.Item.FindControl("radioatt");

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            li = new ListItem();
            li.Text = ds.Tables[0].Rows[i]["Description"].ToString();
            li.Value = ds.Tables[0].Rows[i]["AttendanceCode"].ToString();
            rbtl.Items.Add(li);
        }

    }
}
  please help me out
4

2 回答 2

1

为单选按钮列表添加空检查,您将不会收到对象引用错误。请看下面的代码

c# 代码

protected void fillRepeater_onitembound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        sql = "select Description,AttendanceCode from tblattendancecodes";
        ds = obj.openDataset(sql);
        ListItem li;

        RadioButtonList rbtl = (RadioButtonList)e.Item.FindControl("radioatt");
        if (rbtl != null)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                li = new ListItem();
                li.Text = dt.Rows[i]["ApplicationName"].ToString();
                li.Value = dt.Rows[i]["BuildNumber"].ToString();
                rbtl.Items.Add(li);
            }
        }
    }
}

我尝试了代码,它对我有用

于 2013-11-08T07:08:51.470 回答
0

调试您的代码以找出哪一行给出 null 或未正确实例化,您将获得罪魁祸首代码。

于 2013-11-08T05:50:07.657 回答