speedy05
08-20-2005, 12:56 AM
Hi,
im trying to use a datagrid to display a survey which is stored in a db. Theres 3 columns - column 1 to store the question number,column 2 to store the actual question and column 3 to store the different answer options.I wanted to bind the diff answeroptions in column3 to a radiobuttonlist and this is when the probs started
i keep getting this error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
heres the code im using:
Sub BindDataGrid()
Dim conn As New OdbcConnection(ConnStr)
Dim cmd As New OdbcCommand("SELECT Questions.qid,Questions.qtext,ans_options.anstext from questions inner join ans_options on questions.qid = ans_options.qid ", conn)
conn.Open()
DataGrid1.DataSource = cmd.ExecuteReader((CommandBehavior.CloseConnection Or CommandBehavior.SingleResult))
DataGrid1.DataBind()
End Sub 'BindDataGrid
'bind radiobuttonlist to third column
Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
Dim Conn As New OdbcConnection("ConnStr")
Dim Cmd As New OdbcCommand("SELECT anstext FROM Ans_Options", Conn)
Dim dtrAnswerOptions As OdbcDataReader
Dim rbl As RadioButtonList
Conn.Open()
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
rbl = DirectCast(e.Item.FindControl("rblist"), RadioButtonList)
dtrAnswerOptions = Cmd.ExecuteReader()
rbl.DataSource = dtrAnswerOptions
rbl.DataValueField = "anstext"
rbl.DataTextField = "anstext"
rbl.DataBind()
Case Else
End Select
End Sub
</script>
</head>
<body>
<p align="center">survey </a></p>
<form runat="server">
<asp:DataGrid ID="DataGrid1" HorizontalAlign="Center" CellPadding="3"
HeaderStyle-BackColor="#F7F7F7" EditItemStyle-BackColor="#F7F7F7"
AutoGenerateColumns="False" DataKeyField="Qid"
onItemDataBound = "datagrid1_itemdatabound"
Runat="server">
<Columns>
<asp:TemplateColumn HeaderStyle-Width="30" HeaderText="No.">
<ItemTemplate>
<asp:Literal ID="Literal1" Text='<%#
DataBinder.Eval(Container.DataItem, "qid") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width="30" HeaderText="Question">
<ItemTemplate>
<asp:Literal ID="Literal2" Text='<%#
DataBinder.Eval(Container.DataItem, "qtext") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width="100" HeaderText="Option">
<ItemTemplate>
<asp:RadioButtonList id="rblist" OnSelectedIndexChanged='<%#
DataBinder.Eval(Container.DataItem, "anstext") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
sorry to post so much code,its just i have no idea where the problem is :(
any suggestions gratefully received
im trying to use a datagrid to display a survey which is stored in a db. Theres 3 columns - column 1 to store the question number,column 2 to store the actual question and column 3 to store the different answer options.I wanted to bind the diff answeroptions in column3 to a radiobuttonlist and this is when the probs started
i keep getting this error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
heres the code im using:
Sub BindDataGrid()
Dim conn As New OdbcConnection(ConnStr)
Dim cmd As New OdbcCommand("SELECT Questions.qid,Questions.qtext,ans_options.anstext from questions inner join ans_options on questions.qid = ans_options.qid ", conn)
conn.Open()
DataGrid1.DataSource = cmd.ExecuteReader((CommandBehavior.CloseConnection Or CommandBehavior.SingleResult))
DataGrid1.DataBind()
End Sub 'BindDataGrid
'bind radiobuttonlist to third column
Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
Dim Conn As New OdbcConnection("ConnStr")
Dim Cmd As New OdbcCommand("SELECT anstext FROM Ans_Options", Conn)
Dim dtrAnswerOptions As OdbcDataReader
Dim rbl As RadioButtonList
Conn.Open()
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
rbl = DirectCast(e.Item.FindControl("rblist"), RadioButtonList)
dtrAnswerOptions = Cmd.ExecuteReader()
rbl.DataSource = dtrAnswerOptions
rbl.DataValueField = "anstext"
rbl.DataTextField = "anstext"
rbl.DataBind()
Case Else
End Select
End Sub
</script>
</head>
<body>
<p align="center">survey </a></p>
<form runat="server">
<asp:DataGrid ID="DataGrid1" HorizontalAlign="Center" CellPadding="3"
HeaderStyle-BackColor="#F7F7F7" EditItemStyle-BackColor="#F7F7F7"
AutoGenerateColumns="False" DataKeyField="Qid"
onItemDataBound = "datagrid1_itemdatabound"
Runat="server">
<Columns>
<asp:TemplateColumn HeaderStyle-Width="30" HeaderText="No.">
<ItemTemplate>
<asp:Literal ID="Literal1" Text='<%#
DataBinder.Eval(Container.DataItem, "qid") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width="30" HeaderText="Question">
<ItemTemplate>
<asp:Literal ID="Literal2" Text='<%#
DataBinder.Eval(Container.DataItem, "qtext") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width="100" HeaderText="Option">
<ItemTemplate>
<asp:RadioButtonList id="rblist" OnSelectedIndexChanged='<%#
DataBinder.Eval(Container.DataItem, "anstext") %>'
Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
sorry to post so much code,its just i have no idea where the problem is :(
any suggestions gratefully received