2013-12-09 79 views
0

這是一個非常奇怪的行爲,我無法弄清楚是什麼導致它。 基本上,我有一個aspx頁面,其中我有一個button和一個gridviewGridview上rowediting回發隱藏Gridview

按下button將從db獲取數據到datatable,將用作gridviewdatasource

gridviewcommandfield showeditbutton="true"

一旦databind是成功的,gridview有一些記錄,我按edit button。編輯按鈕上rowediting

GridView1.EditIndex = e.NewEditIndex; 
    GridView1.DataBind(); 

出奇下面的代碼,壓制後edit buttongirdview變爲隱藏。

而當我再次按下button時,它將它帶回編輯模式。奇怪的行爲,任何想法?

.aspx頁面中

<asp:Button ID="Button1" runat="server" Text="Button" 
     CssClass="info-button-flat" onclick="Button1_Click1" /> 
    <br /><br /><br /> 
    <asp:GridView ID="GridView1" runat="server" onrowediting="GridView1_RowEditing"> 
     <Columns> 
      <asp:CommandField ShowEditButton="True" /> 
      <asp:CommandField ShowDeleteButton="True" /> 
     </Columns> 
    </asp:GridView> 

的.cs

protected void Button1_Click1(object sender, EventArgs e) 
    { 
     string aPara= null; 
     aPara= aUser.ID; 
     clsDataConduit aConn = new clsDataConduit(); 
     aDataTable = new DataTable(); 
     aConn.AddParameter("@aPara", aPara); 
     aDataTable = aConn.Return_aDataTable("an_user_sproc"); 
     GridView1.DataSource = aDataTable; 
     GridView1.DataBind(); 
    } 
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 

     GridView1.EditIndex = e.NewEditIndex; 
     GridView1.DataBind(); 
    } 

回答

1

頁在GridView1_RowEditing你是不是重新綁定到任何數據源。只是GridView1.DataBind();是行不通的,除非你設置GridView1.DataSource = SomeSource;

可能的解決辦法:

移動數據綁定代碼的方法稱爲BindData()

public void BindData() 
{ 
    string aPara = null; 
    aPara = aUser.ID; 
    clsDataConduit aConn = new clsDataConduit(); 
    aDataTable = new DataTable(); 
    aConn.AddParameter("@aPara", aPara); 
    aDataTable = aConn.Return_aDataTable("an_user_sproc"); 
    GridView1.DataSource = aDataTable; 
    GridView1.DataBind(); 

} 

而且從Button_Click()調用此方法:

protected void Button1_Click1(object sender, EventArgs e) 
{ 
    BindData(); 
} 

GridView1_RowEditing中打電話給我方法:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 
    BindData(); 
} 

您必須處理GridView1_RowUpdating您將更新基礎數據源。希望能幫助到你!