Solved

Working with GridView in asp.net

Posted on 2014-01-14
3
482 Views
Last Modified: 2014-02-10
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>  

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;


               }



        }

Open in new window

0
Comment
Question by:jazzcatone
3 Comments
 
LVL 26

Accepted Solution

by:
Shaun Kline earned 250 total points
ID: 39780178
You can use the RowCreated or RowDataBound events to perform this action. Compare the e.Row.RowIndex to the GridView.EditIndex so that your code only run your code if the bound/created row is the row being edited.
0
 
LVL 2

Assisted Solution

by:Aijaz Chauhan
Aijaz Chauhan earned 250 total points
ID: 39793471
Use Row Data bound event of grid view  

protected void gvStolenUnits_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       if (e.Row.RowState == DataControlRowState.Edit)
       {
           TextBox txtDDMG = (TextBox)e.Row.FindControl("txtDDMG ");
           if( txtDDMG  != null)
           {
              txtDDMG.ForeColor = Color.Blue;
              txtDDMG.ReadOnly = false;
            }
       }
    }
}
0
 

Author Closing Comment

by:jazzcatone
ID: 39847381
thanks
0

Featured Post

How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

680 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question