2016-04-08 23 views
0

ASP.NET'te yeni. GridView kullanıyorum. GridView satırlarını sayarken, her zaman 0 gösterir. Ben kod veriyorum. Ama kod tarayıcıyı çalıştırdığımda, verileri gösterir. Bu problemi nasıl çözebilirim?GridView.Row.Count her zaman 0, Nasıl çözülür?

Benim CS kodudur:

protected void btnSend_OnClick(object sender, EventArgs e) 
    { 
     string MemberList= (ViewState["Memberlist"]).ToString(); 
     List<PreparedEmail> preparedEmail = new List<PreparedEmail>(); 
     Utility util = new Utility(); 
     int count = 0; 

     int i1 = dlClients.Rows.Count; // it shows always 0 
     #region Send Invitation 
     foreach (GridViewRow mail in dlClients.Rows) 
     { 
      //some code here, It is never execute as dlClients.Rows shows 0 
     }        
} 

Benim aspx kodudur:

<asp:GridView ID="dlClients" EnableViewState="false" runat="server" AutoGenerateColumns="False" ClientIDMode="Static" GridLines="None" AllowPaging="false" CssClass="table table-bordered table-striped" OnPreRender="dlClients_PreRender" DataKeyNames="MemberId" PageSize="10" ShowHeader="true"> 

Ve My verileri bağlama kodu: button_click Etkinlik prerender olaydan önce

Protected void dlClients_PreRender(object sender, EventArgs e) 
    { 
     List<CircleUser> memberList = new CircleUserBusinessLogic().GetAll(); 
     dlClients.DataSource = memberList; 

     dlClients.DataBind(); 
     //GridUpdatePanel.Update(); 
     ViewState["Memberlist"] = memberList; 

     if (dlClients.Rows.Count > 0) 
     { 
      //Replace the <td> with <th> and adds the scope attribute 
      dlClients.UseAccessibleHeader = true; 

      //Adds the <thead> and <tbody> elements required for DataTables to work 
      dlClients.HeaderRow.TableSection = TableRowSection.TableHeader; 

      //Adds the <tfoot> element required for DataTables to work 
      dlClients.FooterRow.TableSection = TableRowSection.TableFooter; 
     } 
    } 
+0

bir sayfadan diğerine size veri aktarmak için bir yoldur autogeneratedcolumns sizin aspx içinde = "true"? Eğer autogeratecolumns atadıysanız true, her zaman sıfır olacaktır demektir. –

+0

Benim aspx kodum: ... Şimdi ne yapmalıyım? – user2488166

+0

cevap

1

denir . Bu, button click olayı çalıştırıldığında databind'un çalışmadığını, dolayısıyla GridView'ın boş olduğunu belirtir. Bunu çözmek için, sayfanın load etkinliğine bağlayabilirsiniz. Bu tıklama etkinliklerinden önce denir.

1

click etkinliklerin aşağıda gibi Düğme içinde Gridview PreRender Olay çağrı: ilk önce gridview PreRender denilen

 protected void btnSend_OnClick(object sender, EventArgs e) 
     { 
      dlClients_PreRender(sender, args); 
      string MemberList = (ViewState["Memberlist"]).ToString(); 
      List<PreparedEmail> preparedEmail = new List<PreparedEmail>(); 
      Utility util = new Utility(); 
      int count = 0; 

      int i1 = dlClients.Rows.Count;    
      foreach (GridViewRow mail in dlClients.Rows) 
      { 
       //some code here, It is never execute as dlClients.Rows shows 0 
      } 
     } 
+0

dlClients_PreRender (gönderici, args) --- verilmiş ama ben bu işe yaramadı ama – user2488166

+0

işe yaramadı Sonra 'SayfaParmakBack' kullanarak gridview bağlama için' Page_Load' olay kullanabilirsiniz özellik –

2

Normalde asp düğmesini tıklatın olay ikinci vurur. Yani Gridview satır saymak PageLoad Yöntem veya Düğme tıklama GRIDVIEW bağlamak için 0.

enter image description here

deneyin olduğunu. Burada örnek bağlama

...

protected void Page_Load(object sender, EventArgs e) 
     { 
      if(!IsPostBack) 
      { 
       DataTable dt = new DataTable(); 
       dt = GetData(); 
       dlClients.DataSource = dt; 

       dlClients.DataBind(); 
      } 
     } 
0

EnableViewState = "true" sen kurdun başka