2015-04-30 2 views
0

Я создал динамическое gridview и хочу присвоить rowdataound и SelectedIndexChanged для gridview.не может найти управление по id во время RowDataBound

ниже мой код HTML

<div id="divGridView" runat="server"></div> 

C#

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

public void buildGridView() 
{ 
    GridView gvSample = new GridView(); 
    gvSample.ID = "gvSample"; 
    gvSample.AutoGenerateColumns = false; 
    gvSample.RowDataBound += gvSample_RowDataBound; 
    gvSample.SelectedIndexChanged += gvSample_SelectedIndexChanged; 

    DataTable dt = new DataTable(); 
    DataColumn dc = new DataColumn(); 

    BoundField BoundField1 = new BoundField(); 
    BoundField1.DataField = "BoundField11"; 

    gvSample.Columns.Add(BoundField1); 

    if (dt.Columns.Count == 0) 
    { 
     dt.Columns.Add("BoundField11", typeof(string)); 
    } 

    DataRow NewRow = dt.NewRow(); 
    NewRow[0] = "sample data"; 
    dt.Rows.Add(NewRow); 

    gvSample.DataSource = dt; 
    gvSample.DataBind(); 
    divGridView.Controls.Add(gvSample); 
} 

protected void gvSample_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     GridView gvSample = (GridView)Page.FindControl("gvSample"); 
     e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvSample, "Select$" + e.Row.RowIndex); 
     e.Row.Style["cursor"] = "pointer"; 
    } 
} 

protected void gvSample_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     // do something 
} 

мой контроль находкой в ​​RowDataBound всегда возвращает нулевое значение. код работает, если я создаю элемент управления gridview в HTML. im НЕ использовать любую главную страницу.

ответ

0

buildGridView(); строится в GET. но, когда у вас есть сообщение о транзакции. он фактически снова обрабатывает жизненный цикл asp. вы можете поместить ur datalist в viewstate и удалить! ispostback(), поэтому, когда вы отправляете назад, ваш datagrid на самом деле не строится, поэтому имеет значение null.

Смежные вопросы