Hameed
Hameed

Reputation: 85

how can i remove the gridview column in asp.net c#?

I have a gridview and output generated is

LINK

But I want to remove the Column_Name column and want this type of output

enter image description here

Never change SQL query because in this way the query works according to my logic. And I also want to remove &nbsp in every textbox and how can I get all the gridview data by using loop and save in SQL Server database?

ASPX:

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
    <form id="form" runat="server">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" 
             onrowdatabound="GridView1_RowDataBound">
        </asp:GridView>
        <asp:Button ID="Button1" runat="server" OnClick="load" Text="gridview" />
        <asp:Button ID="Button2" runat="server" OnClick="show" Text="Button" />
        <asp:Button ID="Button3" runat="server" OnClick="save" Text="Save" />
    </form>
</asp:Content>

Codebehind:

 SqlConnection cnn = new SqlConnection("Data Source=LIFE_WELL;Initial Catalog=db_compiler;Integrated Security=True");

protected void Page_Load(object sender, EventArgs e)
{
    string query = "USE db_compiler SELECT Column_Name FROM tbl_field WHERE Table_Name='deptt'";

    SqlCommand cmd = new SqlCommand(query, cnn);

    DataTable dt = new DataTable();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);

    DataTable table = new DataTable();
    adp.Fill(dt);

    Session["num"] = dt.Rows.Count;

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        DataColumn dc = new DataColumn(dt.Rows[i]["Column_Name"].ToString());
        dt.Columns.Add(dc);
    }

    DataRow r = table.NewRow();

    GridView1.DataSource = table;
    GridView1.DataBind();

    cnn.Close();
    cnn.Open();

    cmd.ExecuteNonQuery();
    cnn.Close();

    Session["table"] = dt;

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

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            TextBox txt = new TextBox();
            txt.Text = e.Row.Cells[i].Text;
            e.Row.Cells[i].Text = "";
            e.Row.Cells[i].Controls.Add(txt);
        }
    }
}

Upvotes: 1

Views: 2456

Answers (2)

Martin Parenteau
Martin Parenteau

Reputation: 73731

You can try with this modified RowDataBound event handler:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int i = 1; i < e.Row.Cells.Count; i++) // Does not process the first cell
        {
            TextBox txt = new TextBox();
            TableCell cell = e.Row.Cells[i];
            txt.Text = cell.Text.Replace("&nbsp;", ""); // Removes &nbsp;
            cell.Text = "";
            cell.Controls.Add(txt);
        }
    }

    e.Row.Cells.RemoveAt(0); // Removes the first cell in the row
}

Upvotes: 0

Rojalin Sahoo
Rojalin Sahoo

Reputation: 1025

Change Your Codebehind code:

protected void Page_Load(object sender, EventArgs e)
{
If(!IsPostBack)
{
    string query = "USE db_compiler SELECT Column_Name FROM tbl_field WHERE Table_Name='deptt'";
            con.Open();
            SqlCommand cmd = new SqlCommand(query, con);

            DataTable dt = new DataTable();
            SqlDataAdapter adp = new SqlDataAdapter(cmd);

            DataTable table = new DataTable();
            adp.Fill(dt);

            Session["num"] = dt.Rows.Count;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataColumn dc = new DataColumn(dt.Rows[i]["Name"].ToString());
                table.Columns.Add(dc); // Make this Column in 2nd DataTable and bind that to Gridview
            }
            DataRow r = table.NewRow();
            Session["table"] = dt;
            table.Rows.Add(r); // Add as many row you want to add  with for loop
            Gridview1.DataSource = table;
            Gridview1.DataBind();

}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            TextBox txt = new TextBox();
            e.Row.Cells[i].Controls.Add(txt);
        }
    }
}

Upvotes: 1

Related Questions