<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="gvCustomer" runat="server" Width="100%" AutoGenerateColumns="False"
            AllowPaging="True" DataKeyNames="CustomerID" OnPageIndexChanging="gvCustomer_PageIndexChanging"
            BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" 
            BorderWidth="1px" CellPadding="3" onrowediting="gvCustomer_RowEditing" 
            onrowcancelingedit="gvCustomer_RowCancelingEdit" 
            onrowupdating="gvCustomer_RowUpdating">
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <RowStyle ForeColor="#000066" />
            <Columns>
                <asp:BoundField DataField="CustomerID" HeaderText="客户ID" />
                <asp:TemplateField HeaderText="公司名称">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("CompanyName") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("CompanyName") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="ContactName" HeaderText="联系人" />
                <asp:BoundField DataField="ContactTitle" HeaderText="联系人头衔" />
                <asp:BoundField DataField="Address" HeaderText="地址" />
                <asp:CommandField ShowEditButton="True" />                    
            </Columns>
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        </asp:GridView>
        <br />
        <asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DataLinq;
using System.Data.Linq;
using BusinessFacade;public partial class _Default : System.Web.UI.Page 
{
    CustomerBFL objCustomer = new CustomerBFL();
   
    protected void Page_Load(object sender, EventArgs e)
    {
        BindGridView();
    }    private void BindGridView()
    {
        Table<Customer> localDataTable;
        localDataTable = objCustomer.SelectRecordAll();        gvCustomer.DataSource = (from tbl in localDataTable
                                 select new
                                 {
                                     tbl.CustomerID,
                                     tbl.CompanyName,
                                     tbl.ContactName,
                                     tbl.ContactTitle,
                                     tbl.Address
                                 });
        gvCustomer.DataBind();        if (localDataTable.Count() == 0)
        {
            lblMessage.Text = "没有找到记录!";
        }
    }    protected void gvCustomer_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvCustomer.PageIndex = e.NewPageIndex;
        BindGridView();
    }    protected void gvCustomer_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvCustomer.EditIndex = e.NewEditIndex;
        BindGridView();
    }    protected void gvCustomer_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Customer cus = new Customer();        //不论是用模板列还是BoundField列,用下面的方式取出来的值都是原来的那个值,修改后的值取不到
        //而且e.NewValues也是空值
        cus.CustomerID = ((TextBox)gvCustomer.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
        Customer c = (Customer)gvCustomer.Rows[e.RowIndex].DataItem;
    }    protected void gvCustomer_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvCustomer.EditIndex = -1;
        BindGridView();
    }
}

解决方案 »

  1.   


      protected void Page_Load(object sender, EventArgs e)
        {
            BindGridView();
        }
      protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
              BindGridView();
            }
        }
      

  2.   

    gvCustomer.Rows[e.RowIndex].FindControls("TextBox1").Text;
      

  3.   

     if(!IsPostBack)
      {
      BindGridView();
      }
      

  4.   

    protected void Page_Load(object sender, EventArgs e)
        {
            BindGridView();
        }
    点击保存后页面回发,重新绑定了。取不到是正常的,取到了还奇了怪了。
      

  5.   

    去查找控件的话要用 FindControls("控件ID")
    gvCustomer.Rows[e.RowIndex].FindControls("TextBox1").Text;