473,397 Members | 1,974 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,397 software developers and data experts.

DropDownList web control in DataGrid

Hi folks,

I am getting an error "Object reference not set to an instance of an object".

It seems I have everything in place but something is obviously in err. If
you could take a quick peak at my code segments and provide any insight in a
reply, I would be eternally grateful. My table name is "rfi" and the field
with a dropdownlist control is called "contract". I have imported the
System.Data and System.Data.OleDb libraries. Currently I am running the page
with a local web server. If I run the page without the reference to the
contract field with its associated functions, it works fine. A question
field is shown only as an example field and is not the problem. All code
referencing the contract field may be causing my problem.

' GLOBAL VARIABLE
Dim ddlContractDataSet as DataSet = New DataSet ( )

' UPDATE ROW CODE SNIPPET
Sub DataGrid1_UpdateRow (sender As Object, e As DataGridCommandEventArgs)
If Not Page.IsValid Then Exit Sub

' GET INFO FROM FIELDS
Dim questionTextBox as TextBox = e.Item.Cells (1).FindControl
("txtQuestion") ' THIS LINE WORKS FINE AND IS SHOWN ONLY AS AN EXAMPLE
Dim ddlContracts as DropDownList = e.Item.Cells (2).FindControl
("ddlContract")
...... ' OTHER FIELDS

' PROVIDE A SQL UPDATE STATEMENT
' PROVIDE A CONNECTION STRING AND A CONNECTION
' PROVIDE A dbCOMMAND with COMMANDTEXT=SQL STATEMENT AND A
dbCONNECTION=CONNECTION
' DECLARE A PARAMETER
Dim contractParam as IDataParameter = New OleDbParameter
("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add (contractParam)
End Sub

' PROVIDE FUNCTION TO POPULATE DROPDOWNLIST FROM DB
Function GetContractChoice( ) As DataSet
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole
DB Services=-4; Data Source=C:\FDMgmt\webfiles\database\fdmdb.mdb"'
Dim dbConnection As IDbConnection = New OleDbConnection(connectionString)
Dim queryString As String = "SELECT [rfi].[contract] FROM [rfi]"

Dim dbCommand As IDbCommand = New OleDbCommand
Dim dbConnection As IDbConnection = New OleDbConnection(strConnString)

dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dataAdapter As IDbDataAdapter = New OleDbDataAdapter
dataAdapter.SelectCommand = dbCommand
dataAdapter.Fill(ddlContractDataSet)

Return ddlContractDataSet
End Function

' PROVIDE FUNCTION TO GET THE SELECTED ITEM
Function GetContractSelectedIndex(contract_id as String) as Integer
Dim iLoop as Integer
Dim dt as DataTable = ddlContractDataSet.Tables("rfi")

For iLoop = 0 to dt.Rows.Count - 1
if contract_id = dt.Rows(iLoop)("ID").ToString() then
Return iLoop
end if
Next iLoop
End Function

' PROVIDE DATAGRID INFO IN THE HTML
<asp:DataGrid id="DataGrid1" runat="server"
OnItemDataBound="DataGrid1_RowDataBound"
OnDeleteCommand="DataGrid1_DeleteRow" DataKeyField="ID"
OnCancelCommand="DataGrid1_CancelRow" OnUpdateCommand="DataGrid1_UpdateRow"
OnEditCommand="DataGrid1_EditRow" OnSortCommand="DataGrid1_Sorting"
AllowSorting="True" OnPageIndexChanged="DataGrid1_Paging" AllowPaging="True"
PageSize="2" Width="75%" AutoGenerateColumns="False"
AlternatingItemStyle-BackColor="#dddddd" CellPadding="5" Font-Size="9pt"
Font-Name="Verdana">
<HeaderStyle backcolor="Navy" forecolor="White" font-size="13pt"
font-bold="True" horizontalalign="Center" />
<PagerStyle backcolor="Navy" forecolor="White" font-size="8pt"
font-bold="True" horizontalalign="Right" nextpagetext="Next >"
prevpagetext="< Prev" />
<Columns>
<asp:EditCommandColumn EditText="Edit" UpdateText="Update"
CancelText="Cancel" ButtonType="LinkButton" />
<asp:ButtonColumn Text="Delete" ButtonType="LinkButton"
CommandName="Delete" />

' FIRST COLUMN (NOT THE PROBLEM, SHOWN AS AN EXAMPLE ONLY)

<asp:TemplateColumn HeaderText="Question" SortExpression="question">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "question") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtQuestion"
Columns="50" MaxLength="2000" Rows="10" Font-Name="Verdana" Font-Size="9pt"
TextMode="MultiLine" Text='<%# DataBinder.Eval(Container.DataItem,
"question") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="txtQuestion" Display="Dynamic" ErrorMessage="<br />You
must provide a Question." />
</EditItemTemplate>
</asp:TemplateColumn>

' PROVIDE CONTRACT COLUMN INFO (THIS IS CODE THAT MAY BE IN ERR)

<asp:TemplateColumn HeaderText="Contract"
SortExpression="contract">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "contract") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ddlContract"
DataSource="<%# GetContractChoice( ) %>" DataTextField="contract"
DataValueField="ID" SelectedIndex='<%#
GetContractSelectedIndex(Container.DataItem("ID")) %>' Columns="20"
MaxLength="50" Font-Name="Verdana" Font-Size="9pt" Text='<%#
DataBinder.Eval(Container.DataItem, "contract") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="ddlContract" Display="Dynamic" ErrorMessage="<br />You
must provide a contract." />
</EditItemTemplate>
</asp:TemplateColumn>

..... ' MORE COLUMNS

</Columns>
</asp:DataGrid>

Apr 5 '06 #1
4 1712
What line in the code is causing the error?

"glenn" wrote:
Hi folks,

I am getting an error "Object reference not set to an instance of an object".

It seems I have everything in place but something is obviously in err. If
you could take a quick peak at my code segments and provide any insight in a
reply, I would be eternally grateful. My table name is "rfi" and the field
with a dropdownlist control is called "contract". I have imported the
System.Data and System.Data.OleDb libraries. Currently I am running the page
with a local web server. If I run the page without the reference to the
contract field with its associated functions, it works fine. A question
field is shown only as an example field and is not the problem. All code
referencing the contract field may be causing my problem.

' GLOBAL VARIABLE
Dim ddlContractDataSet as DataSet = New DataSet ( )

' UPDATE ROW CODE SNIPPET
Sub DataGrid1_UpdateRow (sender As Object, e As DataGridCommandEventArgs)
If Not Page.IsValid Then Exit Sub

' GET INFO FROM FIELDS
Dim questionTextBox as TextBox = e.Item.Cells (1).FindControl
("txtQuestion") ' THIS LINE WORKS FINE AND IS SHOWN ONLY AS AN EXAMPLE
Dim ddlContracts as DropDownList = e.Item.Cells (2).FindControl
("ddlContract")
...... ' OTHER FIELDS

' PROVIDE A SQL UPDATE STATEMENT
' PROVIDE A CONNECTION STRING AND A CONNECTION
' PROVIDE A dbCOMMAND with COMMANDTEXT=SQL STATEMENT AND A
dbCONNECTION=CONNECTION
' DECLARE A PARAMETER
Dim contractParam as IDataParameter = New OleDbParameter
("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add (contractParam)
End Sub

' PROVIDE FUNCTION TO POPULATE DROPDOWNLIST FROM DB
Function GetContractChoice( ) As DataSet
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole
DB Services=-4; Data Source=C:\FDMgmt\webfiles\database\fdmdb.mdb"'
Dim dbConnection As IDbConnection = New OleDbConnection(connectionString)
Dim queryString As String = "SELECT [rfi].[contract] FROM [rfi]"

Dim dbCommand As IDbCommand = New OleDbCommand
Dim dbConnection As IDbConnection = New OleDbConnection(strConnString)

dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dataAdapter As IDbDataAdapter = New OleDbDataAdapter
dataAdapter.SelectCommand = dbCommand
dataAdapter.Fill(ddlContractDataSet)

Return ddlContractDataSet
End Function

' PROVIDE FUNCTION TO GET THE SELECTED ITEM
Function GetContractSelectedIndex(contract_id as String) as Integer
Dim iLoop as Integer
Dim dt as DataTable = ddlContractDataSet.Tables("rfi")

For iLoop = 0 to dt.Rows.Count - 1
if contract_id = dt.Rows(iLoop)("ID").ToString() then
Return iLoop
end if
Next iLoop
End Function

' PROVIDE DATAGRID INFO IN THE HTML
<asp:DataGrid id="DataGrid1" runat="server"
OnItemDataBound="DataGrid1_RowDataBound"
OnDeleteCommand="DataGrid1_DeleteRow" DataKeyField="ID"
OnCancelCommand="DataGrid1_CancelRow" OnUpdateCommand="DataGrid1_UpdateRow"
OnEditCommand="DataGrid1_EditRow" OnSortCommand="DataGrid1_Sorting"
AllowSorting="True" OnPageIndexChanged="DataGrid1_Paging" AllowPaging="True"
PageSize="2" Width="75%" AutoGenerateColumns="False"
AlternatingItemStyle-BackColor="#dddddd" CellPadding="5" Font-Size="9pt"
Font-Name="Verdana">
<HeaderStyle backcolor="Navy" forecolor="White" font-size="13pt"
font-bold="True" horizontalalign="Center" />
<PagerStyle backcolor="Navy" forecolor="White" font-size="8pt"
font-bold="True" horizontalalign="Right" nextpagetext="Next >"
prevpagetext="< Prev" />
<Columns>
<asp:EditCommandColumn EditText="Edit" UpdateText="Update"
CancelText="Cancel" ButtonType="LinkButton" />
<asp:ButtonColumn Text="Delete" ButtonType="LinkButton"
CommandName="Delete" />

' FIRST COLUMN (NOT THE PROBLEM, SHOWN AS AN EXAMPLE ONLY)

<asp:TemplateColumn HeaderText="Question" SortExpression="question">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "question") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtQuestion"
Columns="50" MaxLength="2000" Rows="10" Font-Name="Verdana" Font-Size="9pt"
TextMode="MultiLine" Text='<%# DataBinder.Eval(Container.DataItem,
"question") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="txtQuestion" Display="Dynamic" ErrorMessage="<br />You
must provide a Question." />
</EditItemTemplate>
</asp:TemplateColumn>

' PROVIDE CONTRACT COLUMN INFO (THIS IS CODE THAT MAY BE IN ERR)

<asp:TemplateColumn HeaderText="Contract"
SortExpression="contract">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "contract") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ddlContract"
DataSource="<%# GetContractChoice( ) %>" DataTextField="contract"
DataValueField="ID" SelectedIndex='<%#
GetContractSelectedIndex(Container.DataItem("ID")) %>' Columns="20"
MaxLength="50" Font-Name="Verdana" Font-Size="9pt" Text='<%#
DataBinder.Eval(Container.DataItem, "contract") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="ddlContract" Display="Dynamic" ErrorMessage="<br />You
must provide a contract." />
</EditItemTemplate>
</asp:TemplateColumn>

..... ' MORE COLUMNS

</Columns>
</asp:DataGrid>

Apr 5 '06 #2
Thanks for your reply.

The problem occurs when I call the GetContractChoice ( ) function and the
GetContractSelectedIndex function from the <asp:DropDownList ...> in the
html. Not sure exactly what line as I need to block out chunks of code to
get the page to run without errors.

My Update statement and Param defintions are as follows. The problem may
occur in these lines.

"UPDATE rfi SET question =@questionParam, contract =@contractParam, ***ALOT
OF OTHER FIELDS*** WHERE id =@IDParam"

' CONTRACT PARAM IS DEFINED AS FOLLOWS
Dim contractParam as IDataParameter = New
OleDbParameter("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add(contractParam)

"clickon" wrote:
What line in the code is causing the error?

"glenn" wrote:
Hi folks,

I am getting an error "Object reference not set to an instance of an object".

It seems I have everything in place but something is obviously in err. If
you could take a quick peak at my code segments and provide any insight in a
reply, I would be eternally grateful. My table name is "rfi" and the field
with a dropdownlist control is called "contract". I have imported the
System.Data and System.Data.OleDb libraries. Currently I am running the page
with a local web server. If I run the page without the reference to the
contract field with its associated functions, it works fine. A question
field is shown only as an example field and is not the problem. All code
referencing the contract field may be causing my problem.

' GLOBAL VARIABLE
Dim ddlContractDataSet as DataSet = New DataSet ( )

' UPDATE ROW CODE SNIPPET
Sub DataGrid1_UpdateRow (sender As Object, e As DataGridCommandEventArgs)
If Not Page.IsValid Then Exit Sub

' GET INFO FROM FIELDS
Dim questionTextBox as TextBox = e.Item.Cells (1).FindControl
("txtQuestion") ' THIS LINE WORKS FINE AND IS SHOWN ONLY AS AN EXAMPLE
Dim ddlContracts as DropDownList = e.Item.Cells (2).FindControl
("ddlContract")
...... ' OTHER FIELDS

' PROVIDE A SQL UPDATE STATEMENT
' PROVIDE A CONNECTION STRING AND A CONNECTION
' PROVIDE A dbCOMMAND with COMMANDTEXT=SQL STATEMENT AND A
dbCONNECTION=CONNECTION
' DECLARE A PARAMETER
Dim contractParam as IDataParameter = New OleDbParameter
("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add (contractParam)
End Sub

' PROVIDE FUNCTION TO POPULATE DROPDOWNLIST FROM DB
Function GetContractChoice( ) As DataSet
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole
DB Services=-4; Data Source=C:\FDMgmt\webfiles\database\fdmdb.mdb"'
Dim dbConnection As IDbConnection = New OleDbConnection(connectionString)
Dim queryString As String = "SELECT [rfi].[contract] FROM [rfi]"

Dim dbCommand As IDbCommand = New OleDbCommand
Dim dbConnection As IDbConnection = New OleDbConnection(strConnString)

dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dataAdapter As IDbDataAdapter = New OleDbDataAdapter
dataAdapter.SelectCommand = dbCommand
dataAdapter.Fill(ddlContractDataSet)

Return ddlContractDataSet
End Function

' PROVIDE FUNCTION TO GET THE SELECTED ITEM
Function GetContractSelectedIndex(contract_id as String) as Integer
Dim iLoop as Integer
Dim dt as DataTable = ddlContractDataSet.Tables("rfi")

For iLoop = 0 to dt.Rows.Count - 1
if contract_id = dt.Rows(iLoop)("ID").ToString() then
Return iLoop
end if
Next iLoop
End Function

' PROVIDE DATAGRID INFO IN THE HTML
<asp:DataGrid id="DataGrid1" runat="server"
OnItemDataBound="DataGrid1_RowDataBound"
OnDeleteCommand="DataGrid1_DeleteRow" DataKeyField="ID"
OnCancelCommand="DataGrid1_CancelRow" OnUpdateCommand="DataGrid1_UpdateRow"
OnEditCommand="DataGrid1_EditRow" OnSortCommand="DataGrid1_Sorting"
AllowSorting="True" OnPageIndexChanged="DataGrid1_Paging" AllowPaging="True"
PageSize="2" Width="75%" AutoGenerateColumns="False"
AlternatingItemStyle-BackColor="#dddddd" CellPadding="5" Font-Size="9pt"
Font-Name="Verdana">
<HeaderStyle backcolor="Navy" forecolor="White" font-size="13pt"
font-bold="True" horizontalalign="Center" />
<PagerStyle backcolor="Navy" forecolor="White" font-size="8pt"
font-bold="True" horizontalalign="Right" nextpagetext="Next >"
prevpagetext="< Prev" />
<Columns>
<asp:EditCommandColumn EditText="Edit" UpdateText="Update"
CancelText="Cancel" ButtonType="LinkButton" />
<asp:ButtonColumn Text="Delete" ButtonType="LinkButton"
CommandName="Delete" />

' FIRST COLUMN (NOT THE PROBLEM, SHOWN AS AN EXAMPLE ONLY)

<asp:TemplateColumn HeaderText="Question" SortExpression="question">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "question") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtQuestion"
Columns="50" MaxLength="2000" Rows="10" Font-Name="Verdana" Font-Size="9pt"
TextMode="MultiLine" Text='<%# DataBinder.Eval(Container.DataItem,
"question") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="txtQuestion" Display="Dynamic" ErrorMessage="<br />You
must provide a Question." />
</EditItemTemplate>
</asp:TemplateColumn>

' PROVIDE CONTRACT COLUMN INFO (THIS IS CODE THAT MAY BE IN ERR)

<asp:TemplateColumn HeaderText="Contract"
SortExpression="contract">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "contract") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ddlContract"
DataSource="<%# GetContractChoice( ) %>" DataTextField="contract"
DataValueField="ID" SelectedIndex='<%#
GetContractSelectedIndex(Container.DataItem("ID")) %>' Columns="20"
MaxLength="50" Font-Name="Verdana" Font-Size="9pt" Text='<%#
DataBinder.Eval(Container.DataItem, "contract") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="ddlContract" Display="Dynamic" ErrorMessage="<br />You
must provide a contract." />
</EditItemTemplate>
</asp:TemplateColumn>

..... ' MORE COLUMNS

</Columns>
</asp:DataGrid>

Apr 5 '06 #3
Does the error message not say something like below with the line that is
causing the error highlighted ?

Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object.

Source Error:
Line 228: For i As Integer = 1 To 35
Line 229: field = "Q" + CStr(i)
Line 230: score.ID = "txtQ" + CStr(i)
Line 231: If Not
IsDBNull(ds.Tables("mmsSpecRecord").Rows(0)(field) ) Then
Line 232: score.Text =
ds.Tables("mmsSpecRecord").Rows(0)(field)
Source File: c:\inetpub\wwwroot\Demo\displayMMS.aspx.vb Line: 230

"glenn" wrote:
Thanks for your reply.

The problem occurs when I call the GetContractChoice ( ) function and the
GetContractSelectedIndex function from the <asp:DropDownList ...> in the
html. Not sure exactly what line as I need to block out chunks of code to
get the page to run without errors.

My Update statement and Param defintions are as follows. The problem may
occur in these lines.

"UPDATE rfi SET question =@questionParam, contract =@contractParam, ***ALOT
OF OTHER FIELDS*** WHERE id =@IDParam"

' CONTRACT PARAM IS DEFINED AS FOLLOWS
Dim contractParam as IDataParameter = New
OleDbParameter("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add(contractParam)

"clickon" wrote:
What line in the code is causing the error?

"glenn" wrote:
Hi folks,

I am getting an error "Object reference not set to an instance of an object".

It seems I have everything in place but something is obviously in err. If
you could take a quick peak at my code segments and provide any insight in a
reply, I would be eternally grateful. My table name is "rfi" and the field
with a dropdownlist control is called "contract". I have imported the
System.Data and System.Data.OleDb libraries. Currently I am running the page
with a local web server. If I run the page without the reference to the
contract field with its associated functions, it works fine. A question
field is shown only as an example field and is not the problem. All code
referencing the contract field may be causing my problem.

' GLOBAL VARIABLE
Dim ddlContractDataSet as DataSet = New DataSet ( )

' UPDATE ROW CODE SNIPPET
Sub DataGrid1_UpdateRow (sender As Object, e As DataGridCommandEventArgs)
If Not Page.IsValid Then Exit Sub

' GET INFO FROM FIELDS
Dim questionTextBox as TextBox = e.Item.Cells (1).FindControl
("txtQuestion") ' THIS LINE WORKS FINE AND IS SHOWN ONLY AS AN EXAMPLE
Dim ddlContracts as DropDownList = e.Item.Cells (2).FindControl
("ddlContract")
...... ' OTHER FIELDS

' PROVIDE A SQL UPDATE STATEMENT
' PROVIDE A CONNECTION STRING AND A CONNECTION
' PROVIDE A dbCOMMAND with COMMANDTEXT=SQL STATEMENT AND A
dbCONNECTION=CONNECTION
' DECLARE A PARAMETER
Dim contractParam as IDataParameter = New OleDbParameter
("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add (contractParam)
End Sub

' PROVIDE FUNCTION TO POPULATE DROPDOWNLIST FROM DB
Function GetContractChoice( ) As DataSet
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole
DB Services=-4; Data Source=C:\FDMgmt\webfiles\database\fdmdb.mdb"'
Dim dbConnection As IDbConnection = New OleDbConnection(connectionString)
Dim queryString As String = "SELECT [rfi].[contract] FROM [rfi]"

Dim dbCommand As IDbCommand = New OleDbCommand
Dim dbConnection As IDbConnection = New OleDbConnection(strConnString)

dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dataAdapter As IDbDataAdapter = New OleDbDataAdapter
dataAdapter.SelectCommand = dbCommand
dataAdapter.Fill(ddlContractDataSet)

Return ddlContractDataSet
End Function

' PROVIDE FUNCTION TO GET THE SELECTED ITEM
Function GetContractSelectedIndex(contract_id as String) as Integer
Dim iLoop as Integer
Dim dt as DataTable = ddlContractDataSet.Tables("rfi")

For iLoop = 0 to dt.Rows.Count - 1
if contract_id = dt.Rows(iLoop)("ID").ToString() then
Return iLoop
end if
Next iLoop
End Function

' PROVIDE DATAGRID INFO IN THE HTML
<asp:DataGrid id="DataGrid1" runat="server"
OnItemDataBound="DataGrid1_RowDataBound"
OnDeleteCommand="DataGrid1_DeleteRow" DataKeyField="ID"
OnCancelCommand="DataGrid1_CancelRow" OnUpdateCommand="DataGrid1_UpdateRow"
OnEditCommand="DataGrid1_EditRow" OnSortCommand="DataGrid1_Sorting"
AllowSorting="True" OnPageIndexChanged="DataGrid1_Paging" AllowPaging="True"
PageSize="2" Width="75%" AutoGenerateColumns="False"
AlternatingItemStyle-BackColor="#dddddd" CellPadding="5" Font-Size="9pt"
Font-Name="Verdana">
<HeaderStyle backcolor="Navy" forecolor="White" font-size="13pt"
font-bold="True" horizontalalign="Center" />
<PagerStyle backcolor="Navy" forecolor="White" font-size="8pt"
font-bold="True" horizontalalign="Right" nextpagetext="Next >"
prevpagetext="< Prev" />
<Columns>
<asp:EditCommandColumn EditText="Edit" UpdateText="Update"
CancelText="Cancel" ButtonType="LinkButton" />
<asp:ButtonColumn Text="Delete" ButtonType="LinkButton"
CommandName="Delete" />

' FIRST COLUMN (NOT THE PROBLEM, SHOWN AS AN EXAMPLE ONLY)

<asp:TemplateColumn HeaderText="Question" SortExpression="question">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "question") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="txtQuestion"
Columns="50" MaxLength="2000" Rows="10" Font-Name="Verdana" Font-Size="9pt"
TextMode="MultiLine" Text='<%# DataBinder.Eval(Container.DataItem,
"question") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="txtQuestion" Display="Dynamic" ErrorMessage="<br />You
must provide a Question." />
</EditItemTemplate>
</asp:TemplateColumn>

' PROVIDE CONTRACT COLUMN INFO (THIS IS CODE THAT MAY BE IN ERR)

<asp:TemplateColumn HeaderText="Contract"
SortExpression="contract">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "contract") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ddlContract"
DataSource="<%# GetContractChoice( ) %>" DataTextField="contract"
DataValueField="ID" SelectedIndex='<%#
GetContractSelectedIndex(Container.DataItem("ID")) %>' Columns="20"
MaxLength="50" Font-Name="Verdana" Font-Size="9pt" Text='<%#
DataBinder.Eval(Container.DataItem, "contract") %>' />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="ddlContract" Display="Dynamic" ErrorMessage="<br />You
must provide a contract." />
</EditItemTemplate>
</asp:TemplateColumn>

..... ' MORE COLUMNS

</Columns>
</asp:DataGrid>

Apr 5 '06 #4
I get the following in my error message:

[NullReferenceException: Object reference not set to an instance of an
object.]
ASP.rfiAccess_aspx.GetContractSelectedIndex(String contract_id) +45
ASP.rfiAccess_aspx.__DataBind__control18(Object sender, EventArgs e) +141
"clickon" wrote:
Does the error message not say something like below with the line that is
causing the error highlighted ?

Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object.

Source Error:
Line 228: For i As Integer = 1 To 35
Line 229: field = "Q" + CStr(i)
Line 230: score.ID = "txtQ" + CStr(i)
Line 231: If Not
IsDBNull(ds.Tables("mmsSpecRecord").Rows(0)(field) ) Then
Line 232: score.Text =
ds.Tables("mmsSpecRecord").Rows(0)(field)
Source File: c:\inetpub\wwwroot\Demo\displayMMS.aspx.vb Line: 230

"glenn" wrote:
Thanks for your reply.

The problem occurs when I call the GetContractChoice ( ) function and the
GetContractSelectedIndex function from the <asp:DropDownList ...> in the
html. Not sure exactly what line as I need to block out chunks of code to
get the page to run without errors.

My Update statement and Param defintions are as follows. The problem may
occur in these lines.

"UPDATE rfi SET question =@questionParam, contract =@contractParam, ***ALOT
OF OTHER FIELDS*** WHERE id =@IDParam"

' CONTRACT PARAM IS DEFINED AS FOLLOWS
Dim contractParam as IDataParameter = New
OleDbParameter("@contractParam", OleDbType.varchar, 50)
contractParam.Value = ddlContracts.SelectedIndex
dbCommand.Parameters.Add(contractParam)

"clickon" wrote:
What line in the code is causing the error?

"glenn" wrote:

> Hi folks,
>
> I am getting an error "Object reference not set to an instance of an object".
>
> It seems I have everything in place but something is obviously in err. If
> you could take a quick peak at my code segments and provide any insight in a
> reply, I would be eternally grateful. My table name is "rfi" and the field
> with a dropdownlist control is called "contract". I have imported the
> System.Data and System.Data.OleDb libraries. Currently I am running the page
> with a local web server. If I run the page without the reference to the
> contract field with its associated functions, it works fine. A question
> field is shown only as an example field and is not the problem. All code
> referencing the contract field may be causing my problem.
>
> ' GLOBAL VARIABLE
> Dim ddlContractDataSet as DataSet = New DataSet ( )
>
> ' UPDATE ROW CODE SNIPPET
> Sub DataGrid1_UpdateRow (sender As Object, e As DataGridCommandEventArgs)
> If Not Page.IsValid Then Exit Sub
>
> ' GET INFO FROM FIELDS
> Dim questionTextBox as TextBox = e.Item.Cells (1).FindControl
> ("txtQuestion") ' THIS LINE WORKS FINE AND IS SHOWN ONLY AS AN EXAMPLE
> Dim ddlContracts as DropDownList = e.Item.Cells (2).FindControl
> ("ddlContract")
> ...... ' OTHER FIELDS
>
> ' PROVIDE A SQL UPDATE STATEMENT
> ' PROVIDE A CONNECTION STRING AND A CONNECTION
> ' PROVIDE A dbCOMMAND with COMMANDTEXT=SQL STATEMENT AND A
> dbCONNECTION=CONNECTION
> ' DECLARE A PARAMETER
> Dim contractParam as IDataParameter = New OleDbParameter
> ("@contractParam", OleDbType.varchar, 50)
> contractParam.Value = ddlContracts.SelectedIndex
> dbCommand.Parameters.Add (contractParam)
> End Sub
>
> ' PROVIDE FUNCTION TO POPULATE DROPDOWNLIST FROM DB
> Function GetContractChoice( ) As DataSet
> Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole
> DB Services=-4; Data Source=C:\FDMgmt\webfiles\database\fdmdb.mdb"'
> Dim dbConnection As IDbConnection = New OleDbConnection(connectionString)
> Dim queryString As String = "SELECT [rfi].[contract] FROM [rfi]"
>
> Dim dbCommand As IDbCommand = New OleDbCommand
> Dim dbConnection As IDbConnection = New OleDbConnection(strConnString)
>
> dbCommand.CommandText = queryString
> dbCommand.Connection = dbConnection
>
> Dim dataAdapter As IDbDataAdapter = New OleDbDataAdapter
> dataAdapter.SelectCommand = dbCommand
> dataAdapter.Fill(ddlContractDataSet)
>
> Return ddlContractDataSet
> End Function
>
> ' PROVIDE FUNCTION TO GET THE SELECTED ITEM
> Function GetContractSelectedIndex(contract_id as String) as Integer
> Dim iLoop as Integer
> Dim dt as DataTable = ddlContractDataSet.Tables("rfi")
>
> For iLoop = 0 to dt.Rows.Count - 1
> if contract_id = dt.Rows(iLoop)("ID").ToString() then
> Return iLoop
> end if
> Next iLoop
> End Function
>
> ' PROVIDE DATAGRID INFO IN THE HTML
> <asp:DataGrid id="DataGrid1" runat="server"
> OnItemDataBound="DataGrid1_RowDataBound"
> OnDeleteCommand="DataGrid1_DeleteRow" DataKeyField="ID"
> OnCancelCommand="DataGrid1_CancelRow" OnUpdateCommand="DataGrid1_UpdateRow"
> OnEditCommand="DataGrid1_EditRow" OnSortCommand="DataGrid1_Sorting"
> AllowSorting="True" OnPageIndexChanged="DataGrid1_Paging" AllowPaging="True"
> PageSize="2" Width="75%" AutoGenerateColumns="False"
> AlternatingItemStyle-BackColor="#dddddd" CellPadding="5" Font-Size="9pt"
> Font-Name="Verdana">
> <HeaderStyle backcolor="Navy" forecolor="White" font-size="13pt"
> font-bold="True" horizontalalign="Center" />
> <PagerStyle backcolor="Navy" forecolor="White" font-size="8pt"
> font-bold="True" horizontalalign="Right" nextpagetext="Next >"
> prevpagetext="< Prev" />
> <Columns>
> <asp:EditCommandColumn EditText="Edit" UpdateText="Update"
> CancelText="Cancel" ButtonType="LinkButton" />
> <asp:ButtonColumn Text="Delete" ButtonType="LinkButton"
> CommandName="Delete" />
>
> ' FIRST COLUMN (NOT THE PROBLEM, SHOWN AS AN EXAMPLE ONLY)
>
> <asp:TemplateColumn HeaderText="Question" SortExpression="question">
> <ItemTemplate>
> <%# DataBinder.Eval(Container.DataItem, "question") %>
> </ItemTemplate>
> <EditItemTemplate>
> <asp:TextBox runat="server" id="txtQuestion"
> Columns="50" MaxLength="2000" Rows="10" Font-Name="Verdana" Font-Size="9pt"
> TextMode="MultiLine" Text='<%# DataBinder.Eval(Container.DataItem,
> "question") %>' />
> <asp:RequiredFieldValidator runat="server"
> ControlToValidate="txtQuestion" Display="Dynamic" ErrorMessage="<br />You
> must provide a Question." />
> </EditItemTemplate>
> </asp:TemplateColumn>
>
> ' PROVIDE CONTRACT COLUMN INFO (THIS IS CODE THAT MAY BE IN ERR)
>
> <asp:TemplateColumn HeaderText="Contract"
> SortExpression="contract">
> <ItemTemplate>
> <%# DataBinder.Eval(Container.DataItem, "contract") %>
> </ItemTemplate>
> <EditItemTemplate>
> <asp:DropDownList runat="server" id="ddlContract"
> DataSource="<%# GetContractChoice( ) %>" DataTextField="contract"
> DataValueField="ID" SelectedIndex='<%#
> GetContractSelectedIndex(Container.DataItem("ID")) %>' Columns="20"
> MaxLength="50" Font-Name="Verdana" Font-Size="9pt" Text='<%#
> DataBinder.Eval(Container.DataItem, "contract") %>' />
> <asp:RequiredFieldValidator runat="server"
> ControlToValidate="ddlContract" Display="Dynamic" ErrorMessage="<br />You
> must provide a contract." />
> </EditItemTemplate>
> </asp:TemplateColumn>
>
> ..... ' MORE COLUMNS
>
> </Columns>
> </asp:DataGrid>
>
>
>

Apr 5 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Dominic | last post by:
Hi guys, I'm not sure if this question belongs to FAQ, but I couldn't find a concrete answer. I created a Datagrid control using ItemTemplate, but it's NOT a in-place editing datagrid. One of...
0
by: Shane O. Pinnell | last post by:
I am sure this has come up before, but I haven't been able to find an answer as of yet. That said, any help is definitely appreciated! I have a datagrid populated from a dataset. I have a...
2
by: Sid | last post by:
Hi All, I am trying to populate a dropdown list in my Datagrid control using the OleDbDataReader, but when my function tries to add items to the dropdownlist it says that my dropdownlist...
2
by: Ali | last post by:
I am adding a DropDownList control to my DataGrid footer template. I load my DropDownList using a function that returns an arrayList. I can see all my items in the DropDownList, but when I select...
2
by: Shiju Poyilil | last post by:
Hello, I have a datagrid with only one row and its having 2 dropdownlists, I need to populate the secodn dropdownlist on the basis of the selection in the first dropdown. but I am not able to...
18
by: Julia Hu | last post by:
Hi, I have a datagrid, and in different rows I need to programmatically bind different type of controls and load data into these controls. For example,in the first row I need to bind data into a...
2
by: glenn | last post by:
Hi folks, I am trying to determine which item in a DropDownList Web control has been selected. I have posted an OnSelectedIndexChanged subroutine in my code with a reference to the subroutine...
15
by: glenn | last post by:
Hi folks, I have a DropDownList in a DataGrid that is populated from records in a database. I want to add a value that might be a string such as "Select a Company" for the first item since an...
2
by: steven | last post by:
i've got a dropDownList that I'm trying to populate from my code behind as follows: uxVehicleColourEdit.DataSource = oDsLookups.Tables; if the dropDown is placed inside a datagrid, i get...
0
by: stevem2112 | last post by:
I have a datagrid with 2 Template columns. One column has DropDownLists and the other has Textboxes. I bind each DDL in the ItemCreated event. This datagrid is inside a UserControl that is inside...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.