none
这是怎么回事??cells[]中括号中值改变不影响输出结果 RRS feed

  • 问题

  • 在GridView中,通过控件查找指定位置的值,但是 Cells[i] 这里面的值改变的话,竟然最后都是指向同一个位置的值,不理解,

    这个cells[i] 不是指定是哪一列吗 但是当我改变i的值时候,输出结果是一样的啊

     

    用到的代码:

    我首先绑定GridView一个数据源,其中每个显示数据是通过label控件显示的

    ((Label)e.Row.Cells[0].FindControl("label1")).Text.ToString().Trim()

    ((Label)e.Row.Cells[1].FindControl("label1")).Text.ToString().Trim()

    ((Label)e.Row.Cells[2].FindControl("label1")).Text.ToString().Trim()

    结果竟然是一样的,找到的是同一个地方,为什么啊 只要cells[]的中括号值不超过索引值就不会出错???

    求赐教!!!!


    不断学习,保持进步! www.jilvn.com
    2011年5月26日 9:38

全部回复

  • 没人知道吗???
    不断学习,保持进步! www.jilvn.com
    2011年5月26日 10:14
  • 如果你是直接拖拽一个GridView到页面上,然后绑定数据源,那么:

    e.Row.Cells[索引].Text;

    如果你使用了DataBound手动添加的数据绑定控件,那么:

    ((Label)e.Row.Cells[0].Controls[0] as TextBox).Text.ToString().Trim();

    如果你用ItemTemplate什么的,建议用:

    (e.Row.FindControl("label1") as Label).Text;

    根据你的描述,我测试下来不一样的。请看我的代码——

    【前台】

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                EnableModelValidation="True" onrowdatabound="GridView1_RowDataBound">
                <Columns>
                    <asp:TemplateField HeaderText="Header1">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("Id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Header2">
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server"  Text='<%#Eval("Name") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>

    【后台】

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Reflection;

    namespace WebApplication1
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
          
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GridView1.DataSource = new[]
                    {
                        new{Id=1,Name="A"},
                        new{Id=2,Name="B"}
                    };
                    GridView1.DataBind();

                
                }
            }

            protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Response.Write("<br/>");
                    Response.Write(((Label)e.Row.Cells[0].FindControl("Label1")).Text.ToString().Trim() + "<br/>");
                    Response.Write(((Label)e.Row.Cells[1].FindControl("Label2")).Text.ToString().Trim());
                }
            }

         
        }
    }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月27日 3:16
    版主
  • 您的代码 我正在看 有需要 我就联系您了
    不断学习,保持进步! www.jilvn.com
    2011年5月30日 1:48
  • 请改用:

    foreach(GridViewRow row in GridView1.Rows)

    {

        if(row.RowType == DataControlRowType.DataRow)

        {

              //寻找TextBox然后获取内容试试看

        }

    }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月30日 2:37
    版主
  • 你好 enlarge,

    请问这个问题已经解决了吗?

    如果这个问题已经解决了,建议你选择有帮助的回复标记为答案。这样也可以帮助到其他有同样问题的人。谢谢!


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月6日 6:49
    版主