Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Working with GridView in asp.net

Posted on 2014-01-14
3
Medium Priority
?
492 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 27

Accepted Solution

by:
Shaun Kline earned 1000 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 1000 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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
High user turnover can cause old/redundant user data to consume valuable space. UserResourceCleanup was developed to address this by automatically deleting user folders when the user account is deleted.
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…

877 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