2015-04-22 85 views
0

Asp.net HTML:asp.net的GridView設置爲null,數據源

<asp:GridView ID="GrdDynamic" runat="server" 
    AllowPaging="true" 
    GridLines="None" 
    PageSize="20" 
    CellSpacing="0" 
    AlternatingItemStyle-CssClass="rowb renkliSatir" 
    CssClass="tumislerimtable" 
    AllowSorting="true" 
    AutoGenerateColumns="false"> 
    <HeaderStyle CssClass="rowa" /> 
</asp:GridView> 

<asp:ImageButton ID="search" runat="server" 
    AlternateText="Search" 
    ImageUrl="../images/search.gif" 
    OnClick="search_Click"> 
</asp:ImageButton> 

如果我點擊搜索按鈕下面方法適用

search_Click方法

protected void search_Click(object sender, ImageClickEventArgs e) 
{ 
    DataTable NullDataTable = new DataTable(); 
    NullDataTable = null; 
    GrdDynamic.DataSource = NullDataTable; // I'm trying to clear gridview datasource however this is not working for me 
    GrdDynamic.DataBind(); 

    //After that i bind datasource as below programatically 

    DataTable dt = new DataTable(); 
    DataRow drow = dt.NewRow(); 

    foreach (var project in MultiComboBox.CheckedItems.ToList()) 
    { 
     DataSet ds = procedure.getProjectByID(type.SelectedValue, startDate, endDate); 

     if (ds.Tables[0].Rows.Count > 0) 
     { 
      DataColumn dcol = new DataColumn(ds.Tables[0].Rows[0 ["flow_name"].ToString(), typeof(System.Int32)); 
      dt.Columns.Add(dcol); 

      drow[ds.Tables[0].Rows[0]["flow_name"].ToString()] = ds.Tables[0].Rows[0]["Sayi"].ToString(); 
     } 
    } 

    dt.Rows.Add(drow); 

    foreach (DataColumn col in dt.Columns) 
    { 
     BoundField bfield = new BoundField(); 
     bfield.DataField = col.ColumnName; 
     bfield.HeaderText = col.ColumnName; 
     GrdDynamic.Columns.Add(bfield); 
    } 

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

如果我第一次點擊搜索按鈕結果如下

flow_name 

1 

如果我點擊搜索按鈕,第二次結果如下

flow name flow_name 


1   1 

如果我點擊搜索按鈕,第三次結果如下

flow name flow_name flow_name 


1   1   1 

問:

當我點擊按鈕列和行復制一個ho wever我設置datasource null onclick搜索按鈕,但這是行不通的。我可以如何解決這個問題,我該如何防止複製相同的列和行值?

回答

1

請注意,您的數據綁定技巧僅清除行而不清除列。而對於行來說,這並不重要,因爲在點擊處理程序的末端再次執行一次數據綁定,這會重新爲GridView填充數據。

至於列,運行此每個按鈕單擊

foreach (DataColumn col in dt.Columns) 

有效地增加新的每次列。你應該只運行一次,並在隨後的點擊確保你不添加已經添加的列。或者更好的方法是嘗試在標記中聲明性地定義列列表,並根本刪除列添加代碼。