I have a gridview control. Within this there are is a EditTemplate that contains a textbox called "txtDescribeDMG". When I click the Edit link to put the gridview into EditMode I would like to turn the textbox blue (if certain conditions are true) .
I keep getting
Object reference not set to an instance of an object” . error. I am assuming it is because the textbox does not exist at that point in time. My question is how would I achieve this then? Code is below. Any insight would be most appreciated.
<asp:GridView ID="gvStolenUnits" runat="server" onrowediting="gvStolenUnits_RowEditing" AutoGenerateColumns="False" Width="800px" OnRowCommand="gvStolenUnits_OnRowCommand" OnRowDataBound="gvStolenUnits_OnRowDataBound" DataSourceID="SqlDataSourcegvStolenUnits" BackColor="#EEEEEE" DataKeyNames="SeqNo" BorderStyle="Solid" BorderWidth="1px" BorderColor="#000000" AllowPaging="False" SelectedRowStyle-BackColor="AliceBlue">
<RowStyle BorderStyle="Solid" BorderWidth="1px" CssClass="UnitsRowStyle" BackColor="White" />
<HeaderStyle CssClass="UnitsHeaderStyle" />
<SelectedRowStyle BackColor="Cornsilk" BorderColor="#990000" BorderStyle="Solid" BorderWidth="2px" CssClass="UnitsRowStyle" />
<EmptyDataTemplate>
</EmptyDataTemplate >
<Columns>
<asp:CommandField runat="server" EditText="Edit" CancelText="Cancel" ShowCancelButton="true" ShowDeleteButton="false" ShowEditButton="true" >
<HeaderStyle HorizontalAlign="Center" CssClass="UnitsHeaderStyle" />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Top" wrap="false" width="54px" CssClass="UnitsRowStyle" />
</asp:CommandField>
<asp:BoundField HeaderText="SeqNo" DataField="SeqNo" ReadOnly="true" Visible="true" SortExpression="SeqNo" ItemStyle-Width="10px"></asp:BoundField>
<asp:BoundField HeaderText="Unit" DataField="Unit" ReadOnly="true" SortExpression="Unit" ItemStyle-Width="20px"></asp:BoundField>
<asp:BoundField HeaderText="Make" DataField="Make" ReadOnly="true" SortExpression="Make" ItemStyle-Width="20px"></asp:BoundField>
<asp:BoundField HeaderText="Model" DataField="Model" ReadOnly="true" SortExpression="Model" ItemStyle-Width="20px"></asp:BoundField>
<asp:TemplateField HeaderText="Recovered?" ItemStyle-Width="20px">
<ItemTemplate><%# Eval("Recovered")%></ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlIsUnitRecovered" selectedvalue='<%# Bind("Recovered") %>' OnSelectedIndexChanged="ddlIsUnitRecovered_OnSelectedIndexChanged" runat="server" AutoPostBack="True" >
<asp:ListItem Text="Please Select" Value="" Selected="True"></asp:ListItem>
<asp:ListItem Text="Yes" Value="Y"></asp:ListItem>
<asp:ListItem Text="No" Value="N"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Is Unit Damaged?" ItemStyle-Width="20px">
<ItemTemplate><%# Eval("IsUnitDamaged")%></ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlInsertIsUnitDamagedTheft" selectedvalue='<%# Bind("IsUnitDamaged") %>' OnSelectedIndexChanged="ddlInsertIsUnitDamagedTheft_OnSelectedIndexChanged" runat="server" AutoPostBack="True" runat="server">
<asp:ListItem Text="Please select" Value="" Selected="True"></asp:ListItem>
<asp:ListItem Text="Yes" Value="Y"></asp:ListItem>
<asp:ListItem Text="No" Value="N"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Describe Damage">
<ItemTemplate><%# Eval("Damage")%></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDescribeDMG" Text='<%# Bind("Damage") %>' runat="server" Width="100%"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="UnitID" DataField="UnitID" ReadOnly="true" SortExpression="UnitID" ItemStyle-Width="20px" Visible="true"></asp:BoundField>
</Columns>
</asp:GridView>
Select all Open in new window
protected void gvStolenUnits_RowEditing(object sender, GridViewEditEventArgs e)
{
// Get the currently selected row using the SelectedRow property.
int index = Convert.ToInt32(e.NewEditIndex);
GridViewRow row = gvStolenUnits.Rows[index];
ClaimInfo ci = new ClaimInfo();
int unitid = Convert.ToInt32(row.Cells[8].Text);
DataSet ds = ci.GetSelectedUnit(claimid, unitid);
string rec = ds.Tables[0].Rows[0]["Recovered"].ToString();
string isunitdmg = ds.Tables[0].Rows[0]["IsUnitDamaged"].ToString();
///THIS IS WHERE IT FAILS !!!!!!
TextBox txtDDMG = (TextBox)row.FindControl("txtDescribeDMG");
if (rec == "Y" && isunitdmg == "Y")
{
txtDDMG.ForeColor = Color.Blue;
txtDDMG.ReadOnly = false;
}
}
Select all Open in new window