locked
Object reference not set to an instance of an object. RRS feed

  • Question

  • User-1473011517 posted

    Help

    =>

    protected void btn1_Click(object sender, EventArgs e)
    {
    HLable.Text= (DetailsView1.FindControl("DateS1") as TextBox).Text;
    }

    =>

    <asp:TemplateField HeaderText="Subject I">
    <ItemTemplate>English (02)
    <asp:TextBox ID="DateS1" runat="server" Text="02/09/2016" TextMode="SingleLine"></asp:TextBox>
    </ItemTemplate>
    </asp:TemplateField>

    Error

    =>

    Object reference not set to an instance of an object.

    Friday, September 2, 2016 9:31 AM

Answers

  • User283571144 posted

    Hi vijaypwr61,

    vijaypwr61

    Object reference not set to an instance of an object.

    This error is caused by FindControl method don't find the control.

    As far as I know, if you want to find the textbox in DetailsView1, you need know its row index.

    Then you could use findcontrol method find the textbox in  DetailsView's row.

    More details, you could refer to follow codes:

    Html:

     <div>
                <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="SqlDataSource1">
                    <Fields>
                        <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
                        <asp:TemplateField HeaderText="City" SortExpression="City">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <InsertItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
                            </InsertItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("City") %>'></asp:Label>
    
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Subject I">
                            <ItemTemplate>
                                English (02)
                                <asp:TextBox ID="DateS1" runat="server" Text="02/09/2016" TextMode="SingleLine"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Fields>
                </asp:DetailsView>
                <br />
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MysqlConnectionString %>" SelectCommand="SELECT * FROM [City]"></asp:SqlDataSource>
            </div>

    Code-behind:

       protected void Button1_Click(object sender, EventArgs e)
            {
                TextBox tex =(TextBox)DetailsView1.Rows[0].FindControl("DateS1");
                Label2.Text = tex.Text;
            }

    Best Regards,

    Brando

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, September 2, 2016 12:01 PM

All replies

  • User283571144 posted

    Hi vijaypwr61,

    vijaypwr61

    Object reference not set to an instance of an object.

    This error is caused by FindControl method don't find the control.

    As far as I know, if you want to find the textbox in DetailsView1, you need know its row index.

    Then you could use findcontrol method find the textbox in  DetailsView's row.

    More details, you could refer to follow codes:

    Html:

     <div>
                <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="SqlDataSource1">
                    <Fields>
                        <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
                        <asp:TemplateField HeaderText="City" SortExpression="City">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <InsertItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
                            </InsertItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("City") %>'></asp:Label>
    
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Subject I">
                            <ItemTemplate>
                                English (02)
                                <asp:TextBox ID="DateS1" runat="server" Text="02/09/2016" TextMode="SingleLine"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Fields>
                </asp:DetailsView>
                <br />
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MysqlConnectionString %>" SelectCommand="SELECT * FROM [City]"></asp:SqlDataSource>
            </div>

    Code-behind:

       protected void Button1_Click(object sender, EventArgs e)
            {
                TextBox tex =(TextBox)DetailsView1.Rows[0].FindControl("DateS1");
                Label2.Text = tex.Text;
            }

    Best Regards,

    Brando

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, September 2, 2016 12:01 PM
  • User-1473011517 posted

    Thank you.Cool

    Saturday, September 3, 2016 2:44 PM