Interview

10 GridView Interview Questions and Answers

Prepare for your web development interview with this guide on GridView, covering key concepts and practical questions to enhance your understanding.

GridView is a versatile and powerful control used in web development for displaying and managing tabular data. It is a staple in many web applications due to its ability to handle large datasets efficiently while providing a user-friendly interface for sorting, paging, and editing data. GridView’s flexibility and ease of customization make it an essential tool for developers working with data-driven applications.

This article offers a curated selection of GridView-related interview questions designed to help you demonstrate your proficiency and understanding of this crucial component. By familiarizing yourself with these questions and their answers, you will be better prepared to showcase your technical expertise and problem-solving abilities in your upcoming interviews.

GridView Interview Questions and Answers

1. Describe how to bind data to a GridView from a DataTable. Provide a code example.

To bind data to a GridView from a DataTable, follow these steps:

  • Create a DataTable and populate it with data.
  • Set the DataSource property of the GridView to the DataTable.
  • Call the DataBind method on the GridView.

Here’s a concise code example in C#:

DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));

dataTable.Rows.Add(1, "John Doe");
dataTable.Rows.Add(2, "Jane Smith");

GridView gridView = new GridView();
gridView.DataSource = dataTable;
gridView.DataBind();

2. How can you enable sorting in a GridView? Provide a code snippet.

To enable sorting in a GridView, set the AllowSorting property to true and handle the Sorting event. This allows sorting based on the column header clicked by the user.

Example:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
    </Columns>
</asp:GridView>

In the code-behind, handle the Sorting event to sort the data source and rebind it to the GridView.

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable dataTable = GetData(); // Method to fetch data
    if (dataTable != null)
    {
        DataView dataView = new DataView(dataTable);
        dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
        GridView1.DataSource = dataView;
        GridView1.DataBind();
    }
}

private string GetSortDirection(string column)
{
    string sortDirection = "ASC";
    string previousSortExpression = ViewState["SortExpression"] as string;
    if (previousSortExpression != null && previousSortExpression == column)
    {
        string previousSortDirection = ViewState["SortDirection"] as string;
        if (previousSortDirection != null && previousSortDirection == "ASC")
        {
            sortDirection = "DESC";
        }
    }
    ViewState["SortDirection"] = sortDirection;
    ViewState["SortExpression"] = column;
    return sortDirection;
}

3. What are TemplateFields in GridView, and how do you use them? Provide an example.

TemplateFields in GridView allow for custom templates for different states of a data-bound control, such as displaying and editing data. This provides greater flexibility compared to the standard BoundField.

Example:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <%# Eval("Name") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Age">
            <ItemTemplate>
                <%# Eval("Age") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Age") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

In this example, the GridView control contains two TemplateFields: one for “Name” and one for “Age”. Each TemplateField has an ItemTemplate for displaying data and an EditItemTemplate for editing data.

4. Explain how to implement paging in a GridView. Include a code example.

Paging in a GridView displays large datasets in smaller chunks, improving user experience by reducing load times. To implement paging, set the AllowPaging property to true and handle the PageIndexChanging event.

Example:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging">
</asp:GridView>

In the code-behind:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridView();
    }
}

private void BindGridView()
{
    // Assume GetData() returns a DataTable with your data
    GridView1.DataSource = GetData();
    GridView1.DataBind();
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    BindGridView();
}

5. Describe how to use the RowDataBound event in GridView. Provide a code example.

The RowDataBound event in GridView is triggered for each row as it is being bound to data. This event allows customization of the content and appearance of the rows based on the data they contain.

Example:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // Example: Change the background color of rows based on a condition
        if (Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "Quantity")) < 10)
        {
            e.Row.BackColor = System.Drawing.Color.Red;
        }
    }
}

In this example, the RowDataBound event changes the background color of rows where the “Quantity” field is less than 10.

6. How can you implement inline editing in a GridView? Provide a code example.

Inline editing in a GridView allows users to edit data directly within the control. To implement inline editing, handle the Edit, Update, and Cancel events.

Example:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" />
        <asp:BoundField DataField="Name" HeaderText="Name" />
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridView();
    }
}

private void BindGridView()
{
    // Sample data source
    DataTable dt = new DataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("Name");
    dt.Rows.Add("1", "John Doe");
    dt.Rows.Add("2", "Jane Smith");

    GridView1.DataSource = dt;
    GridView1.DataBind();
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindGridView();
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    // Retrieve the updated values
    GridViewRow row = GridView1.Rows[e.RowIndex];
    string id = ((Label)row.FindControl("ID")).Text;
    string name = ((TextBox)row.Cells[1].Controls[0]).Text;

    // Update the data source with the new values (this example uses a DataTable)
    DataTable dt = (DataTable)GridView1.DataSource;
    DataRow dr = dt.Rows.Find(id);
    dr["Name"] = name;

    GridView1.EditIndex = -1;
    BindGridView();
}

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GridView1.EditIndex = -1;
    BindGridView();
}

7. Explain how to use CommandField in GridView. Provide an example.

CommandField in GridView adds command buttons to each row for actions like editing, deleting, and selecting rows. The CommandField can be customized to show different buttons based on requirements.

Example:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
        <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" ShowSelectButton="True" />
    </Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:YourConnectionString %>" SelectCommand="SELECT [ID], [Name], [Age] FROM [YourTable]"></asp:SqlDataSource>

In this example, the GridView is bound to a SqlDataSource, and the CommandField is used to display Edit, Delete, and Select buttons for each row.

8. Describe how to export GridView data to Excel. Provide a code example.

To export GridView data to Excel, render the GridView control to a string and write that string to an Excel file. This involves setting the appropriate content type and headers for the response.

Example in C#:

protected void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    using (StringWriter sw = new StringWriter())
    {
        HtmlTextWriter hw = new HtmlTextWriter(sw);

        // Render the GridView control.
        GridView1.RenderControl(hw);

        // Write the rendered content to the response stream.
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
}

public override void VerifyRenderingInServerForm(Control control)
{
    // Required to verify that the control is rendered properly.
}

9. How can you apply conditional formatting in a GridView? Provide a code example.

Conditional formatting in a GridView can be achieved by handling the RowDataBound event. By checking the values of the cells in this event, you can apply different styles based on specific conditions.

Example:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int value = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "YourColumnName"));
        if (value > 100)
        {
            e.Row.BackColor = System.Drawing.Color.Red;
        }
        else
        {
            e.Row.BackColor = System.Drawing.Color.Green;
        }
    }
}

In this example, the background color of the row is set to red if the value in “YourColumnName” is greater than 100, otherwise, it is set to green.

10. Explain how to handle events like RowCommand in GridView. Provide a code example.

In GridView, the RowCommand event is used to handle custom commands for rows. This event is triggered when a button within a GridView row is clicked. The RowCommand event provides a way to determine which button was clicked and to execute the corresponding logic.

To handle the RowCommand event, you need to:

  • Add a Button or LinkButton to the GridView template.
  • Set the CommandName property of the button to a specific command.
  • Implement the RowCommand event handler in the code-behind to handle the command.

Example:

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="Button1" runat="server" CommandName="Select" Text="Select" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

In the code-behind:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        // Get the row index
        int index = Convert.ToInt32(e.CommandArgument);
        // Retrieve the row
        GridViewRow row = GridView1.Rows[index];
        // Perform your logic here
    }
}
Previous

10 vRealize Automation Interview Questions and Answers

Back to Interview
Next

10 System on Chip Interview Questions and Answers