2011-04-20 73 views
1

我有一個頁腳gridview,並顯示在頁腳價格列的總數。我想要訪問頁腳中的值並將其顯示在gridview外部的文本框中。需要在gridview外的文本框gridview中的頁腳總數

這是我的GridView的外觀僅頁腳模板

<asp:TemplateField HeaderText="Total" > 
<ItemTemplate> 
<asp:Label ID="lbltotal" runat="server" Text='' ></asp:Label> 
</ItemTemplate> 
<FooterTemplate> 
<asp:Label ID="lbltotalprice" runat="server" Text=''></asp:Label> 
</FooterTemplate> 
</asp:TemplateField> 

下面就是我如何在頁腳中顯示總

In gridview rowdatabound event 
    if (e.Row.RowType == DataControlRowType.Footer) 
      { 
       Label amounttotal = (Label)e.Row.FindControl("lbltotalprice"); 
       amounttotal.Text = String.Format("{0:C2}", total); 
      } 

我試圖在以下方式中的另一種方法

GridViewRow row = GridView1.FooterRow; 
Total.Text= ((Label)row.FindControl("lbltotalprice")).ToString();--- does not help at all 

請在texbox gridview的外部訪問在頁腳這個值幫助。 在此先感謝。

回答

1

使用文本框代替標籤試試吧。文本框可以用相同的語法訪問,但是我看到了標籤問題。

string a = ((TextBox)row.FindControl("TextBox1")).Text; 
1

你可以嘗試設置這個ItemDataBound事件之外,一旦你的列表已經被綁定和項目金額已全部填充(這樣就可以檢索這些值,並計算出總的)。如何做到這一點的一個例子如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     MyGrid.DataSource = GetDataSource(); 
     MyGrid.DataBind(); 

     SetTotalInGridFooter(); 
    } 
} 

private void SetTotalInGridFooter() 
{ 
    double total = 0; 

    foreach (RepeaterItem ri in in MyGrid.Items) 
    { 
     if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem) 
     { 
      double d; 

      Label lbltotal = (Label) ri.FindControl("lbltotal"); 

      if (Double.TryParse(lbltotal.Text, out d)) 
       total += d; 

      continue; 
     } 

     if (ri.ItemType == ListItemType.Footer) 
     { 
      Label lbltotalprice = (Label) ri.FindControl("lbltotalprice"); 
      lbltotalprice.Text = String.Format("{0:C2}", total); 

      break; 
     } 
    } 
}