`

gridview获取当前行索引的方法

 
阅读更多

在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作。例如,可以获得当前行某一个控件元素;设置某一元素的值等等。

下面结合实例介绍几种获得GridView当前行索引值的方法。

实例:

 目的获取GridViewRowCommand的当前索引行。

 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件。

代码:

<asp:TemplateField HeaderText="操作">

            <ItemTemplate>

                    <asp:LinkButton ID="lbtnQianRu" runat="server" CommandName="QianRu" 

                     CommandArgument='<%# Eval("Id") %>'>签入</asp:LinkButton>  

                     <asp:LinkButton ID="lbtnQianChu " runat="server" CommandName="QianChu">签出                      </asp:LinkButton>

                    </ItemTemplate>

</asp:TemplateField>

小提示:如果在后台代码中用e.CommandArgument取值的话,前台代码就必须在按钮中设置CommandArgument的值,值为绑定的数据库字段。如:

 //因为在客户端中就已经将LinkButtonCommandArgument与主键Id给绑定了所以在此可以直接用e.CommandArgument得出主键ID的值

int id = Convert.ToInt32(e.CommandArgument.ToString()); 

 GridView里已经设置了LinkButton为事件处理按钮,将通过以下方法获取索引:

protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){

 if (e.CommandName == "QianRu")

{  

【方法一】

GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)); //此得出的值是表示那行被选中的索引值

 inf id=Convert.ToInt32(GridView1.DataKeys[drv.RowIndex].Value); //此获取的值为GridView中绑定数据库中的主键值

注意:运用此方法,需要对GridViewDataKeyNames属性进行设置,此例中设置为主键字段。

【方法二】

GridViewRow drv = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;//此得出的值是表示那行被选中的索引值

int id = Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text);   //此获取的值为GridView中绑定数据库中的主键值,取值方法是选中的行中的第一列的值,drv.RowIndex取得是选中行的索引

  }

 }

 

此外,还有一些方法可以实现获得当前行索引值。

【方法三】linkbutton控件的Command事件,利用senderParent获取GridView中的当前行

                   protected void lbtnQianChu_Command(object sender, CommandEventArgs e)

                   {

                    LinkButton lb = (LinkButton)sender;

                            DataControlFieldCell dcf = (DataControlFieldCell)lb.Parent;

                            GridViewRow gvr = (GridViewRow)dcf.Parent; //此得出的值是表示那行被选中的索引值

                            lbtnQianChu.SelectedIndex = gvr.RowIndex;

                   }

【方法四】linkbutton控件的Click事件,获取GridView中的当前行

protected void LinkButton1_Click(object sender, EventArgs e)

{

      //行号

      int row = ((GridViewRow)((LinkButton)sender).NamingContainer).RowIndex; 

}

【方法五】如果在模板列中添加一下DropDownList控件,并开启其AutoPostback属性,DropDownList SelectedIndexChanged事件中,获取GridView中的当前行。

下面是SelectedIndexChanged事件的代码摘要:

DropDownList ddl = (DropDownList)sender;

GridViewRow gvr = (GridViewRow)ddl.NamingContainer;

int id = int.Parse(GridView1.DataKeys[gvr.RowIndex][0].ToString());

int num = int.Parse(ddl.Text);

第一句用来获取触发事件的DropDownList控件。

第二句就利用该控件的NamingContainer属性,获取其容器,也就是GridViewRow对象。

 

提示:由于DropDoweListbutton不同,无法指定其CommandName,所以,通过用NamingContainer属性来解决问题。

    先来看看微软对该NamingContainer属性的解释:

    获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 Control.ID 属性值的服务器控件。

    ASP.NET Web 应用程序的每一页均包含控件的层次结构。此层次结构与控件是否生成用户可见的 UI 无关。给定控件的命名容器是层次结构中该控件之上的父控件,此父控件实现 INamingContainer 接口。实现此接口的服务器控件为其子服务器控件的 ID 属性值创建唯一的命名空间。

    当针对列表 Web 服务器控件(如 Repeater  DataList 服务器控件)进行数据绑定时,为服务器控件创建唯一的命名空间尤其重要。当数据源中的多个项创建服务器控件的多个实例,且该服务器控件是重复控件的子级时,命名容器确保这些子控件的每个实例具有不冲突的 UniqueID 属性值。页的默认命名容器是请求该页时生成的 Page 类的实例。

可以使用此属性确定特定服务器控件所在的命名容器。

 

【方法六】如果模板列中有CheckBox控件的情况,通过CheckBox1_CheckedChanged事件中,获取GridView中的当前行。

CheckBox chk = (CheckBox)sender;

DataControlFieldCell dcf = (DataControlFieldCell)chk.Parent;

GridViewRow gvr = (GridViewRow)dcf.Parent;

 

【方法七】

<asp:GridView ID="gvTest" runat="server">         

        <Columns>

        <asp:TemplateField>

        <ItemTemplate>

        DisplayIndex : <%# Container.DisplayIndex %>  || DataItemIndex : <%# Container.DataItemIndex %><br />

        </ItemTemplate>

        </asp:TemplateField>

        </Columns>

</asp:GridView>

http://www.cnblogs.com/chillsrc/archive/2009/08/11/1543471.html

分享到:
评论

相关推荐

    ASP.NET使用gridview获取当前行的索引值

    ① 目的:获取GridView中RowCommand的当前索引行。 ② 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件。 代码: 操作&gt; &lt;asp:LinkButton ID=lbtnQianRu runat=server CommandName

    ASP.NET中gridview获取当前行的索引值

     ① 目的:获取GridView中RowCommand的当前索引行。  ② 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件。  代码:  操作&gt;    &lt;asp:LinkButton ID=lbtnQianRu runat=se

    winform中获取gridview选定行标识列的值

    在探讨如何在WinForm应用程序中获取GridView控件中选定行的标识列的值之前,我们需要先了解几个关键概念:WinForm、GridView控件以及相关的编程技术。本篇内容将围绕这些核心点展开,并提供详细的解释与示例代码。 ...

    GridView上下移动行事件

    5. **行移动逻辑**:在服务器端,根据行的当前索引和移动方向,计算新的索引。然后,从DataSource中删除该行,再将其插入到新位置。最后,调用GridView的DataBind()方法重新绑定数据,以更新显示。 6. **前端交互**...

    GridView控件行上移、下移

    - **上移操作**:当用户点击“上移”按钮时,需要获取当前行的索引,然后与前一行的索引进行交换。首先,通过RowCommand事件捕获用户操作,然后在代码-behind中获取选定行的索引。接着,交换选定行与前一行的数据源...

    gridview动态添加空白行

    当需要在`GridView`中动态添加一个空白行时,可以先调用`InsertData()`方法获取当前的数据表,然后创建一个新的空白行并添加到`DataTable`中,最后重新绑定数据源即可。 ```csharp protected void btnAdd_Click...

    GridView删除行后台代码

    在这个示例中,`e.RowIndex`就是用来获取被删除行的索引值。 #### 3. **数据源更新** 在服务器端处理删除操作时,我们需要根据传入的行索引来确定要删除的具体记录,并从数据源中移除该记录。在提供的代码片段中,...

    asp.net gridview的Rowcommand命令中获取行索引的方法总结

    下面将详细介绍在*** GridView的RowCommand事件中获取行索引的方法。 首先,需要明确的是,在GridView的Command事件中不能直接像DataGrid那样直接通过事件参数获取当前行。这是因为在GridViewCommandEventArgs事件...

    VS 自带Gridview分页以及操作记录后返回当前页

    在该方法中,通常会从数据库获取数据并根据新的页面索引调整数据源,然后调用`DataBind()`方法更新Gridview。 ```csharp public void Dbing() { int temp = 0; string cardid = CardId; DataSet ds = _...

    Gridview删除行的前台提示(删除的是Gridview数据不是数据库中的)

    // 获取当前删除行的索引 int index = e.RowIndex; // 从GridView中获取要删除的数据项 GridViewRow row = GridView1.Rows[index]; // 在这里可以获取具体的列值,比如: string name = ((Label)row.Cells...

    GridView自动序号

    `((Container as GridViewRow).RowIndex + 1)`直接获取当前行的索引并加1,这样就可以为每一行生成一个从1开始的正序编号。 ### 总结 通过以上两种方法,我们可以灵活地为GridView中的每一行自动添加序号,提升...

    asp.gridview取值

    这里的`GetRowValues`方法接收两个参数:第一个参数是行索引,第二个参数是一个字符串数组,表示想要获取哪些列的值。通过这种方式可以非常方便地获取指定行指定列的值。 ### 总结 以上介绍了几种常见的`GridView`...

    Gridview给每行前增加指定的序号或控件

    // 获取当前行的索引(注意:索引从0开始) int rowIndex = e.Row.RowIndex + 1; // 创建一个新的Label控件 Label lblIndex = new Label(); // 设置Label的文本为序号 lblIndex.Text = rowIndex.ToString(); ...

    gridview行索引获取方法及实现代码(非js版)

    本篇将介绍如何在不使用JavaScript的情况下,通过服务器端代码获取GridView的行索引。 在前一篇文章中,我们看到了如何利用JavaScript获取GridView行索引,这主要依赖于客户端事件和DOM元素的遍历。然而,当处理...

    gridview的buttonfield获取该行的索引值(实例讲解)

    这个索引是基于零的,表示当前行在GridView中的位置。 ```csharp if (e.CommandName == "Details") { int RowIndex = Convert.ToInt32(e.CommandArgument); } ``` 有了行索引后,我们可以使用GridView的`DataKeys...

    使用Ajax和Jquery实现GridView的展开、合并源码

    // 获取当前行 // 这里进行Ajax请求,获取要展开的数据 $.ajax({ url: "AjaxHandler.aspx", type: "POST", data: { id: row.data("id") }, // 传递当前行的标识 success: function (data) { // 在这里处理...

    Gridview的行向上移和向下移

    4. **行索引**:在处理行移动时,需要获取当前选中行的索引。GridView提供了SelectedIndex属性,可以方便地获取选中行的索引。 5. **交换行位置**:实际的移动操作通常是通过调整数据源中的元素顺序来实现的。如果...

    GridView 实现行号倒叙排列,

    1. **获取当前页索引和每页大小**:通过`GridView`的`PageIndex`和`PageSize`属性来获取当前页面的索引和每页显示的记录数量。 2. **计算总行数**:与不分页情况相同,也需要获取数据源的总行数。 3. **动态设置行号...

Global site tag (gtag.js) - Google Analytics