DataGrid1里加了一个模板列  是HTML控件  ID为Text1   设置成“作为服务器端控件运行”DataGrid1绑定数据后    我在Text1里输入了一些文本值  比如   123我想点一个按钮Button1取得这个123    可我这么写为什么不对呢?private void Button1_Click(object sender, System.EventArgs e)
{
  for(int i=0;i<this.DataGrid1.Items.Count;i++)
{
this.Response.Write(((HtmlInputText)this.DataGrid1.Items[i].FindControl("Text1")).Value);
}
}

解决方案 »

  1.   

    你的Page_Load事件干了什么,没有用IsPostBack == false来绑定DataGrid吧~
      

  2.   

    楼上的GG  在这里呀   
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!this.IsPostBack)
    {
    this.SearchProduct();   //绑定DataGrid
    }
    }
      

  3.   

    this.DataGrid1.Items[i].FindControl("Text1")).Value追下看看到底是什么,不会不是String吧
      

  4.   

    哦..少了个
    DataGrid1.Items[i].Cells[X].FindControl("Text1")).Value
      

  5.   

    private void Button1_Click(object sender, System.EventArgs e)
    {
      for(int i=0;i<this.DataGrid1.Items.Count;i++)
    {
    this.Response.Write(((HtmlInputText)this.DataGrid1.Items[i].Cells[i].FindControl("Text1")).Value);
    }
    }
      

  6.   

    OK了...
    Code:
    WebForm1.aspx
    ------------------------------------------------------------------------
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>JzeroBiao</title>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <asp:DataGrid ID="DataGrid1" Runat="server" AutoGenerateColumns="False" ShowHeader="False">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:TextBox ID="test1" Runat="server"></asp:TextBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    <asp:Button ID="btn_test" Runat="server" Text="测试"></asp:Button>
    </form>
    </body>
    </HTML>
    ------------------------------------------------------------------------
    WebForm1.aspx.cs
    ------------------------------------------------------------------------
    private void btn_test_Click(object sender, System.EventArgs e)
    {
    for (int i=0;i<10;i++)
    {
    Response.Write(((TextBox)DataGrid1.Items[i].Cells[0].FindControl("test1")).Text);
    Response.Write("<br>");
    }
    }
    ------------------------------------------------------------------------
      

  7.   

    先知GG 和 小虎GG的方法我试了  好象还是8行啊
      

  8.   

    那个cell[0]是0  对吧?
      

  9.   

    你那只指定了行(Items),没有指定列(cell)....我的代码测试通过才发的..你认真睇吓~
      

  10.   

    先知GG 索引超出范围。必须为非负值并小于集合大小。参数名: index你那DataGrid里根本没有绑定   怎么可以输入值啊
      

  11.   

    WebForm1.aspx.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;namespace WebApplication1
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button btn_test;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    if(Page.IsPostBack == false)
    {
    DataTable dtObj = new DataTable();
    DataRow drObj;
    for (int i=0;i<10;i++)
    {
    drObj = dtObj.NewRow();
    dtObj.Rows.Add(drObj);
    }
    DataGrid1.DataSource = dtObj;
    DataGrid1.DataBind();
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btn_test.Click += new System.EventHandler(this.btn_test_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {

    } private void btn_test_Click(object sender, System.EventArgs e)
    {
    for (int i=0;i<10;i++)
    {
    Response.Write(((TextBox)DataGrid1.Items[i].Cells[0].FindControl("test1")).Text);
    Response.Write("<br>");
    }
    }
    }
    }------------------------------------------------------------------------