PC Review Forums Newsgroups Microsoft DotNet Microsoft ADO .NET DropDownList web control in DataGrid

Reply

DropDownList web control in DataGrid

 
Thread Tools Rate Thread
Old 05-04-2006, 03:26 PM   #1
=?Utf-8?B?Z2xlbm4=?=
Guest
 
Posts: n/a
Default 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
<aspataGrid 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>
<aspropDownList 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>
</aspataGrid>



  Reply With Quote
Reply



Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off