在datagrid外设置一个按钮(button3)
sub button3(sender as object, e as eventargs)
dim _item as datagrid.item
dim i as integer
for i=0 to datagrid1,items.count-1
_item=datagrid.items(i)
dim thecontent as textbox=_item.findcontrol("content") //content为textbox的id
next
end sub

解决方案 »

  1.   

    我现在是三个textbox,单价、数量、总价
    用这个方法肯定不行!
      

  2.   

    我做了一个简单的例子:
    //=============================================
    html代码:
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebAppPowerDataGridTest.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script>
    function getsum(obj1,obj2){
    return obj1*obj2;
    }

    // -->
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    &nbsp;
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 56px" runat="server"
    AutoGenerateColumns="False" AllowPaging="True">
    <Columns>
    <asp:TemplateColumn HeaderText="OrderID ">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OrderID") %>'>
    </asp:TextBox></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="EmployeeID">
    <ItemTemplate>
    <asp:TextBox id="TextBox2" runat="server" Text='<%# DataBinder.Eval(Container,"DataItem.EmployeeID") %>'>
    </asp:TextBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="sum">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:TextBox id="TextBox3" runat="server"></asp:TextBox></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </HTML>
      

  3.   

    CS部分的代码:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;namespace WebAppPowerDataGridTest
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    SqlConnection con = new SqlConnection("server=localhost;database=northwind;pwd=;uid=sa;");
    SqlDataAdapter da = new SqlDataAdapter("select orderid,EmployeeID from orders",con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    this.DataGrid1.DataSource = ds;
    this.DataGrid1.DataBind();
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item){
    TextBox t1 = (TextBox)e.Item.Cells[0].FindControl("TextBox1");
    TextBox t2 = (TextBox)e.Item.Cells[1].FindControl("TextBox2");
    TextBox t3 = (TextBox)e.Item.Cells[2].FindControl("TextBox3");
    t3.Attributes.Add("onBlur",""+t3.ClientID+".value = getsum("+t1.ClientID+".value,"+t2.ClientID+".value)");
    }
    }
    }
    }
      

  4.   

    关键是后面DataGrid1_ItemDataBound里面的代码!这是当t3失去焦点的时候将计算t1*t2的值写到t3里面!你可以参考这个方法完成你自己的设计!
      

  5.   

    我试了一下,如果按上面的方法页面直接显示模板列的情况下是可以的,但如果在每一行要在点击编辑以后才显示模板列的话。在DataGrid1_ItemDataBound事件中就找不到控件,不知道如何解决?