2013-08-15 2 views
0

здесь я динамически связываю столбцы столбцов с помощью кода, потому что мой метод GetSocailAnalytics возвращает динамический столбец в соответствии с переданным параметром. После связывания столбца сетки с использованием таблицы данных my grd_OnRowCommand событие не срабатывает, когда Я нажимаю на строку сетки. сетка успешно связывается. Может ли один помочь мне это issue.here мой код ...Событие OnRowCommand = "grd_RowCommand" не срабатывает при щелчке по строке

<asp:GridView ID="grd" EnableViewState="true" AutoGenerateColumns="false" OnRowCommand="grd_RowCommand" 
        runat="server" OnRowDataBound="grd_RowDataBound"> 
        <Columns> 
        </Columns> 
       </asp:GridView> 
private void GetData() 
{ 
    try 
    { 
     int TotalRecords = 0; 
     DataTable dt = ClsSocialManager.GetSocialAnalytics(Convert.ToInt32(hdnReferrerId.Value), Convert.ToInt32(hdnReferralId.Value), out TotalRecords, Convert.ToInt32(hdnPageIndex.Value)); 
     if (dt != null && dt.Rows.Count > 0) 
     { 
      BindTemplateFiled(dt); 
      grd.Visible = true; 

     } 
     else 
     { 
      grd.Visible = false; 
     } 
     lblStatus.Text = TotalRecords.ToString() + " Record(s) found"; 
    } 
    catch (Exception ex) 
    { 
     lblStatus.Text = "Some Error Occured " + ex.Message; 
     lblStatus.CssClass = "ErrMsg"; 
    } 
} 

//Start Crearting GridColumn Dynamically 
class LinkColumn : ITemplate 
{ 
    public void InstantiateIn(System.Web.UI.Control container) 
    { 
     LinkButton link = new LinkButton(); 
     link.ID = "lnkbtnReferrerHost"; 
     link.DataBinding += new EventHandler(this.link_DataBinding); 
     link.CommandName = "sad"; 
     container.Controls.Add(link); 
    } 

    private void link_DataBinding(Object sender, EventArgs e) 
    { 
     LinkButton lnkReferrerHost = (LinkButton)sender; 
     GridViewRow row = (GridViewRow)lnkReferrerHost.NamingContainer; 
     lnkReferrerHost.Text = Convert.ToString((((System.Data.DataRowView)(row.DataItem))).Row[1]); 
     lnkReferrerHost.CommandArgument = Convert.ToString((((System.Data.DataRowView)(row.DataItem))).Row[0]); 
     //lnkReferrerHost.CommandName = "Filter"; 
    } 
} 

private void BindTemplateFiled(DataTable dt) 
{ 
    for (int i = 0; i < dt.Columns.Count; i++) 
    { 
     if (dt.Columns[i].ColumnName == "Referrer Host") 
     { 
      var lnkbtnReferrerHost = new TemplateField(); 
      lnkbtnReferrerHost.ItemTemplate = new LinkColumn(); 
      lnkbtnReferrerHost.HeaderText = dt.Columns[i].ColumnName;     
      grd.Columns.Add(lnkbtnReferrerHost); 
     } 
     else 
     { 
      BoundField field = new BoundField(); 
      field.DataField = dt.Columns[i].ColumnName; 
      field.HeaderText = dt.Columns[i].ColumnName; 
      grd.Columns.Add(field); 
     } 

    } 
    grd.DataSource = dt; 
    grd.DataBind(); 
} 
//End Crearting GridColumn Dynamically 


protected void grd_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    try 
    { 
     if (e.CommandName == "Filter") 
     { 
      GridViewRow gvr = (GridViewRow)grd.Rows[((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex]; 
      LinkButton lbtn = (LinkButton)gvr.FindControl("lnkReferrerHost"); 
      hdnReferrerId.Value = Convert.ToString(Convert.ToInt32(e.CommandArgument)); 
      lblCurrentPage.Text = lbtn.Text; 
      GetData(); 
     } 
    } 
    catch 
    { 
    } 
} 

ответ

0

Событие RowCommand возникает при нажатии на кнопку в GridView управления .

это не не стреляя при нажатии на сетке подряд

решение добавления колонки кнопки (LinkButton) к GridView с CommandName ="Filter"

+0

привет Damith, поэтому, Что вопрос я должен написать то же событие не стрельба .. – SANDEEP

+0

Событие командного короба не запускается ... – SANDEEP