中继控制中的无线电列表

时间:2013-11-08 05:38:28

标签: c# mysql asp.net repeater radiobuttonlist

我一直在研究一个项目,因为我陷入其中一个问题,因为我有一个转发器和radiobuttonlist,我想从我的数据库填充radiobuttonlist但我得到一个错误,因为对象引用未设置为对象的实例。

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

2 个答案:

答案 0 :(得分:1)

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

c#c​​ode

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);
            }
        }
    }
}

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

答案 1 :(得分:0)

调试代码以找出哪一行给出了null或没有正确实例化,你将得到罪魁祸首代码。