2013-06-28 35 views
0

我有一個GridView設置與我試圖綁定到DataTable ..然後,我通過網頁對GridView的值進行了一些更改..然後,我將後面的代碼按鈕單擊,並看到DataTable中仍然有它的舊值...GridView的變化沒有在綁定的數據表中顯示

爲GridView ASPX標記代碼:

<asp:gridview ID="ESBAndTSRValuesInputGridView" runat="server" ShowFooter="true" AutoGenerateColumns="false"> 
     <Columns> 
     <asp:BoundField DataField="Award ID" HeaderText="Award ID" Visible="false" /> 
     <asp:BoundField DataField="Award Name" HeaderText="Award Name" /> 
     <asp:TemplateField HeaderText="ESB Value"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="TSR Value"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     </Columns> 
</asp:gridview> 

從點擊一個按鈕的隱藏代碼初始化GridView的數據:

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("Award ID", typeof(string))); 
dt.Columns.Add(new DataColumn("Award Name", typeof(string))); 
dt.Columns.Add(new DataColumn("ESB Value", typeof(string))); 
dt.Columns.Add(new DataColumn("TSR Value", typeof(string))); 
DataRow[] PSPAwards = dtAwards.Select("AWARDTYPE = 'PSP'"); 
foreach (DataRow dr in PSPAwards) 
{ 
    dt.Rows.Add(dr["AWARDID"].ToString(), dr["AWARDNAME"].ToString(), "0", "100"); 
} 
ViewState["ESBAndTSRValuesDataTable"] = dt; 
ESBAndTSRValuesInputGridView.DataSource = dt; 
ESBAndTSRValuesInputGridView.DataBind(); 

在上面的代碼,你可以看到,我使用默認值0和100初始化行。這是我在修改從網頁,這些值之後調試事件過程中看到..

我怎樣才能讓GridView自動將對其所做的所有更改保存到其鏈接的DataTable中?

我使用.NET 2.0框架與VS2005 ..

+0

有人可以幫我在這裏嗎? – Ahmad

回答

0

有時框架未能刷新了DataSet/DataTable中的新數據。

嘗試清除網格數據源。

ESBAndTSRValuesInputGridView.DataSource = null; 
ESBAndTSRValuesInputGridView.DataBind(); 
ESBAndTSRValuesInputGridView.DataSource = dt; 
ESBAndTSRValuesInputGridView.DataBind(); 

所以,你的代碼將

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("Award ID", typeof(string))); 
dt.Columns.Add(new DataColumn("Award Name", typeof(string))); 
dt.Columns.Add(new DataColumn("ESB Value", typeof(string))); 
dt.Columns.Add(new DataColumn("TSR Value", typeof(string))); 
DataRow[] PSPAwards = dtAwards.Select("AWARDTYPE = 'PSP'"); 
foreach (DataRow dr in PSPAwards) 
{ 
    dt.Rows.Add(dr["AWARDID"].ToString(), dr["AWARDNAME"].ToString(), "0", "100"); 
} 
ViewState["ESBAndTSRValuesDataTable"] = dt; 
ESBAndTSRValuesInputGridView.DataSource = null; 
ESBAndTSRValuesInputGridView.DataBind(); 

ESBAndTSRValuesInputGridView.DataSource = dt; 
ESBAndTSRValuesInputGridView.DataBind(); 
+0

我應該在什麼時候執行此代碼? – Ahmad

+0

在將您的網格重新分組之前進行Excatly。 –

+0

試過了..不工作:( – Ahmad

1

試試這個

網格視圖

<asp:gridview ID="ESBAndTSRValuesInputGridView" runat="server" ShowFooter="true" AutoGenerateColumns="false"> 
     <Columns> 
     <asp:BoundField DataField="AwardID" HeaderText="Award ID" Visible="false" /> 
     <asp:BoundField DataField="AwardName" HeaderText="Award Name" /> 
     <asp:TemplateField HeaderText="ESBValue"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox1" Text='<%# Eval("ESBValue") %>' runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="TSR Value"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox2" Text='<%# Eval("TSRValue") %>' runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     </Columns> 
</asp:gridview> 

,並在後面的代碼

 DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("AwardID", typeof(string))); 
     dt.Columns.Add(new DataColumn("AwardName", typeof(string))); 
     dt.Columns.Add(new DataColumn("ESBValue", typeof(string))); 
     dt.Columns.Add(new DataColumn("TSRValue", typeof(string))); 
     DataRow[] PSPAwards = dtAwards.Select("AWARDTYPE = 'PSP'"); 
     foreach (DataRow dr in PSPAwards) 
     { 
      dt.Rows.Add(dr["AWARDID"].ToString(), dr["AWARDNAME"].ToString(), "0", "100"); 
     } 
     ViewState["ESBAndTSRValuesDataTable"] = dt; 
     ESBAndTSRValuesInputGridView.DataSource = dt; 
     ESBAndTSRValuesInputGridView.DataBind(); 
+0

不,不是這樣..輸出結果沒有什麼區別../ – Ahmad

+0

我已經更新我的代碼..試試吧 –

+0

試過了..仍然沒有工作..但是,一個問題我曾經是默認值沒有顯示在GridView之前(即0和100值沒有顯示)..現在他們出現了..但是,當我改變他們,然後在代碼隱藏,它仍然是0和100無處不在.. :( – Ahmad

相關問題