temp sun
temp sun

Reputation: 146

how to create button click event in gridview RowDataBound c# asp.net

i am trying to create button and click event in rowdatabound in gridview c# asp.net like below code

 protected void btnerror_Click(object sender, EventArgs e)
{
         GridView gv = new GridView();
        gv.RowDataBound += gv_RowDataBound;
        gv.RowCommand += gv_RowCommand;
        gv.RowCreated += gv_RowCreated;

        gv.EnableViewState = true;

        gv.DataSource = _dt;
        gv.DataBind();
}


void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        ImageButton btnUpdate = new ImageButton();

        btnUpdate.ID = "btnupdate";
        btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
        btnUpdate.ToolTip = "Click Update";
        btnUpdate.CommandName = "update";


        btnUpdate.Click += btnUpdate_Click;

        TableCell tc = new TableCell();

        tc.Controls.Add(btnUpdate);
        e.Row.Cells.Add(tc);

    }
}


void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "update")
    {

    }
}

while click that button click event is not firing ...

where i made error...

thank u.......

Upvotes: 4

Views: 10342

Answers (2)

Tim Schmelter
Tim Schmelter

Reputation: 460018

Do you really want to create the GridView manually? I strongly doubt that. Instead add it declaratively to the aspx-page and make it visible in btnerror_Click.

Don't create the control dynamically and register the event handler in RowDataBound but in RowCreated which is triggered on every postback (as opposed to RowDataBound):

void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton btnUpdate = new ImageButton();
        btnUpdate.Click += btnUpdate_Click;
        TableCell tc = new TableCell();

        tc.Controls.Add(btnUpdate);
        e.Row.Cells.Add(tc);
    }
}

void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {    
        ImageButton btnUpdate = (ImageButton)e.Row.FindControls("btnupdate") 
        btnUpdate.ID = "btnupdate";
        btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
        btnUpdate.ToolTip = "Click Update";
        btnUpdate.CommandName = "update";
    }
}

So create it in RowCreated but initialize it in RowDataBound where you can also access the datasource (if required).

Also note that you should DataBind the GridView only if(!IsPostBack) not on every postback (if that's the case). So add this check where you assign the datasource.

Upvotes: 5

Rahul Nikate
Rahul Nikate

Reputation: 6337

You need to add function for click event

btnUpdate.Click += btnUpdate_Click;

protected void btnUpdate_Click(object sender, EventArgs e)
{

}

Upvotes: 0

Related Questions