2010-02-18 54 views
0

我想修改我gridview的每一行中的字段,因爲它呈現。我需要用客戶端Javascript修改它。我對asp.net有些陌生,但我認爲我應該用clientscriptmanager做些事情。修改Gridview,因爲它正在通過javascript呈現

我想出了一個簡單的場景,這基本上是我想要做的,以避免陷入細節。如果我能完成以下任務,我可以完成我的目標。

說我有名稱和工資的網格視圖。我想在顯示它之前將每個人的工資增加一倍。很顯然,我能做到這一點在後面的代碼,但由於我做的更復雜的實際事物的性質,我需要做的是在javascript

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
      onrowdatabound="GridView1_RowDataBound" > 
      <Columns> 
       <asp:BoundField HeaderText="Full Name" DataField="Name" ></asp:BoundField> 
      <asp:BoundField HeaderText="Salary" DataField="Salary" /> 
      </Columns> 
+2

gridview將被完全呈現,然後才能在javascript中觸摸它。 RowDataBound是渲染前更改值的最佳位置。 – awright18 2010-02-18 05:12:23

回答

1

它肯定這不會是一個好方法。如果您的瀏覽器禁用了JavaScript,那麼您將無法獲得實際的數據,這是不可取的。

無論如何這樣做會做到這一點。使用jQuery

$("#GridView1 tr td:nth-child(2)").each (function(){ 
    var value = parseInt($(this).text(),10) * 2; 
    $(this).text(value); 
}); 
1

這可能不是你要找的內容爲,但我會在你引用的情況下使用模板字段。或者更好的做法是,修改從數據存儲返回的數據,以獲得已計算的值。

<asp:TemplateField HeaderText="Salary"> 
    <ItemTemplate> 
    <%#Eval("Salary") * 2 %> 
    </ItemTemplate> 
</asp:TemplateField> 

有很多原因,你不會用客戶端腳本來做到這一點。首先,它可以在瀏覽器上禁用。另外,您依賴於客戶端來執行計算,這將更有效且適當地在服務器上運行。