[已解决问题] gridview中取得当前行的行号,共有几种方法啊,最好具体
提问时间: 2008-03-26 15:51
悬赏分:20 浏览:662 次
 gridview中取得当前行的行号,共有几种方法啊,最好具体点,有实例
提问者:小孤狸 - 初学一级

问题补充:asp中,在gridview中,有一模板列,就叫linkbutton,想单击它时,获取它所在行的索引值

最佳答案
HTML Code

<asp:GridView ID="GridView1" DataKeyNames="ID" runat="server">
            <Columns>
                <asp:boundfield DataField="Name" HeaderText="Name"></asp:boundfield>
                <asp:templatefield>
                    <itemtemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>
                    </itemtemplate>
                </asp:templatefield>
            </Columns>
        </asp:GridView>

C# code

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.GridView1.DataSource = GetTable();
            this.GridView1.DataBind();
        }
    }

    private DataTable GetTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("Name");

        for (int i = 0; i < 5; i++)
        {
            dt.Rows.Add(new string[] { "ID"+i.ToString(), "Name"+i.ToString()});
        }
        return dt;
    }

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        //行号
        int row = ((GridViewRow)((LinkButton)sender).NamingContainer).RowIndex;
        //所点击行第一列Name的值
        Response.Write(this.GridView1.Rows[row].Cells[0].Text);
        //所点击行的ID
        Response.Write(this.GridView1.DataKeys[row].Value.ToString());
    }



2008/3/26 21:47:46 回答者:翅膀


提问者对于答案的评价:thanks
其它回答(4)
        <asp:GridView ID="gvTest" runat="server">
        
        <Columns>
        <asp:TemplateField>
        <ItemTemplate>
        DisplayIndex : <%# Container.DisplayIndex %>  || DataItemIndex : <%# Container.DataItemIndex %><br />
        </ItemTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:GridView>

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("name");
        for (int i = 0; i < 20; i++)
        {
            DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);
        }
        gvTest.DataSource = dt;  
        gvTest.DataBind();
    }

你说的是这个?


3个月前   回答者:沙加 - 老鸟四级
e.rowIndex
3个月前   回答者:AndyFish - 小虾三级
如果是.net2.0的话就更容易了
GridView设置DataKeyNames属性
比如给MyGridView设置DataKeyNames="ArticleID"
然后在.cs中
string id = this.MyGridView.DataKeys[e.RowIndex].Value.ToString();
简单吧
3个月前   回答者:小龟爬爬 - 初学一级
e.Item.FindControl("控件ID")

e.CommandArgument 

e.Item.Cells[0].Text

就这几个吧  
3个月前   回答者:yeyang - 菜鸟二级
评论
3个月前   关涛的博客 :
原来有这么多啊,我只知道两种,但是好像和你们的有点不同!
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除