在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作。例如,可以获得当前行某一个控件元素;设置某一元素的值等等。
下面结合实例介绍几种获得GridView当前行索引值的方法。
实例:
① 目的:获取GridView中RowCommand的当前索引行。
② 前台页面:在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的值,值为绑定的数据库字段。如:
//因为在客户端中就已经将LinkButton的CommandArgument与主键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中绑定数据库中的主键值
注意:运用此方法,需要对GridView的DataKeyNames属性进行设置,此例中设置为主键字段。
【方法二】
GridViewRow drv = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;//此得出的值是表示那行被选中的索引值
int id = Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text); //此获取的值为GridView中绑定数据库中的主键值,取值方法是选中的行中的第一列的值,drv.RowIndex取得是选中行的索引
}
}
此外,还有一些方法可以实现获得当前行索引值。
【方法三】在linkbutton控件的Command事件,利用sender的Parent获取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对象。
提示:由于DropDoweList与button不同,无法指定其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
相关推荐
① 目的:获取GridView中RowCommand的当前索引行。 ② 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件。 代码: 操作> <asp:LinkButton ID=lbtnQianRu runat=server CommandName
① 目的:获取GridView中RowCommand的当前索引行。 ② 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件。 代码: 操作> <asp:LinkButton ID=lbtnQianRu runat=se
在探讨如何在WinForm应用程序中获取GridView控件中选定行的标识列的值之前,我们需要先了解几个关键概念:WinForm、GridView控件以及相关的编程技术。本篇内容将围绕这些核心点展开,并提供详细的解释与示例代码。 ...
5. **行移动逻辑**:在服务器端,根据行的当前索引和移动方向,计算新的索引。然后,从DataSource中删除该行,再将其插入到新位置。最后,调用GridView的DataBind()方法重新绑定数据,以更新显示。 6. **前端交互**...
- **上移操作**:当用户点击“上移”按钮时,需要获取当前行的索引,然后与前一行的索引进行交换。首先,通过RowCommand事件捕获用户操作,然后在代码-behind中获取选定行的索引。接着,交换选定行与前一行的数据源...
当需要在`GridView`中动态添加一个空白行时,可以先调用`InsertData()`方法获取当前的数据表,然后创建一个新的空白行并添加到`DataTable`中,最后重新绑定数据源即可。 ```csharp protected void btnAdd_Click...
在这个示例中,`e.RowIndex`就是用来获取被删除行的索引值。 #### 3. **数据源更新** 在服务器端处理删除操作时,我们需要根据传入的行索引来确定要删除的具体记录,并从数据源中移除该记录。在提供的代码片段中,...
下面将详细介绍在*** GridView的RowCommand事件中获取行索引的方法。 首先,需要明确的是,在GridView的Command事件中不能直接像DataGrid那样直接通过事件参数获取当前行。这是因为在GridViewCommandEventArgs事件...
在该方法中,通常会从数据库获取数据并根据新的页面索引调整数据源,然后调用`DataBind()`方法更新Gridview。 ```csharp public void Dbing() { int temp = 0; string cardid = CardId; DataSet ds = _...
// 获取当前删除行的索引 int index = e.RowIndex; // 从GridView中获取要删除的数据项 GridViewRow row = GridView1.Rows[index]; // 在这里可以获取具体的列值,比如: string name = ((Label)row.Cells...
`((Container as GridViewRow).RowIndex + 1)`直接获取当前行的索引并加1,这样就可以为每一行生成一个从1开始的正序编号。 ### 总结 通过以上两种方法,我们可以灵活地为GridView中的每一行自动添加序号,提升...
这里的`GetRowValues`方法接收两个参数:第一个参数是行索引,第二个参数是一个字符串数组,表示想要获取哪些列的值。通过这种方式可以非常方便地获取指定行指定列的值。 ### 总结 以上介绍了几种常见的`GridView`...
// 获取当前行的索引(注意:索引从0开始) int rowIndex = e.Row.RowIndex + 1; // 创建一个新的Label控件 Label lblIndex = new Label(); // 设置Label的文本为序号 lblIndex.Text = rowIndex.ToString(); ...
本篇将介绍如何在不使用JavaScript的情况下,通过服务器端代码获取GridView的行索引。 在前一篇文章中,我们看到了如何利用JavaScript获取GridView行索引,这主要依赖于客户端事件和DOM元素的遍历。然而,当处理...
这个索引是基于零的,表示当前行在GridView中的位置。 ```csharp if (e.CommandName == "Details") { int RowIndex = Convert.ToInt32(e.CommandArgument); } ``` 有了行索引后,我们可以使用GridView的`DataKeys...
// 获取当前行 // 这里进行Ajax请求,获取要展开的数据 $.ajax({ url: "AjaxHandler.aspx", type: "POST", data: { id: row.data("id") }, // 传递当前行的标识 success: function (data) { // 在这里处理...
4. **行索引**:在处理行移动时,需要获取当前选中行的索引。GridView提供了SelectedIndex属性,可以方便地获取选中行的索引。 5. **交换行位置**:实际的移动操作通常是通过调整数据源中的元素顺序来实现的。如果...
1. **获取当前页索引和每页大小**:通过`GridView`的`PageIndex`和`PageSize`属性来获取当前页面的索引和每页显示的记录数量。 2. **计算总行数**:与不分页情况相同,也需要获取数据源的总行数。 3. **动态设置行号...