GridView获取行号和列号

yinhunfeixue 2010-02-07 09:31:47
<asp:GridView ID="gridView" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="LinkButton1" runat="server" CausesValidation="false" OnClick="Test"
CommandName="" Text='<%#Eval("name") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


protected void Test(object sender, EventArgs e)
{
//在这里怎么获取sender所在的行号和列号.
}

问题请看注释
...全文
1281 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinhunfeixue 2010-03-03
  • 打赏
  • 举报
回复
我搞定了,谢谢各位。
likevs 2010-02-10
  • 打赏
  • 举报
回复
引用 14 楼 yinhunfeixue 的回复:
引用 11 楼 likevs 的回复:太简单了 循环一遍控件,好像是以DataRow对象吧 判断是首模板或者底模板或者中间分隔模板,或者最常用的内容模板,然后取对象属性

循环太浪费资源了,还是少用比较好。。。。
谢谢。



哈,不好意思,当时没注意看你上面的代码,原来是一个按钮呀,你说得对,循环浪费资源.

其它老大的方法都不错,我看了下,10楼的最是直接
likevs 2010-02-08
  • 打赏
  • 举报
回复
太简单了

循环一遍控件,好像是以DataRow对象吧

判断是首模板或者底模板或者中间分隔模板,或者最常用的内容模板,然后取对象属性
polarissky 2010-02-08
  • 打赏
  • 举报
回复
其实使用CommandName也可以:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="AddButton" runat="server"
CommandName="AddToCart"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Add to Cart" />
</ItemTemplate>
</asp:TemplateField>

protected void GridView1_RowCommand(object sender, 
GridViewCommandEventArgs e)
{
if (e.CommandName == "AddToCart")
{
// Retrieve the row index stored in the
// CommandArgument property.
int index = Convert.ToInt32(e.CommandArgument);

// Retrieve the row that contains the button
// from the Rows collection.
GridViewRow row = GridView1.Rows[index];

// Add code here to add the item to the shopping cart.
}
}

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kingboy2008 的回复:]
C# codeprotectedvoid Test(object sender, EventArgs e)
{
Button btn= (Button)sender;int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号int j= Convert.ToInt16(GridView1.DataKeys[i].V?-
[/Quote]

up
jack15850798154 2010-02-08
  • 打赏
  • 举报
回复
看看对你有帮助吗??
jack15850798154 2010-02-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yinhunfeixue 的回复:]
引用 1 楼 wuyq11 的回复:
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);



行号是对的,j是什么?
[/Quote]


举个例子来说吧
你将一个student表绑定到grid上 这个表里有一些字段 包括id 姓名 学号 等等等等
grid的DataKey 属性设置了 datakey=“学号”
下边开始解释问题 GridView1.DataKeys是什么?
GridView有一个属性是DataKey 当将数据表绑定到GridView时,设置数据表的一列为DataKey 即GridView.datakey=“学号” msdn讲DataKey解释为 获取 DataKeyCollection 对象,它存储数据列表控件中每个记录的键值。 其实 就是将 [学号] 这列作为列关键字 列标识 e.RowIndex是什么含义? 能够使用e.rowindex 说明 应该是grid的row相关事件 其中的e就是事件的触发者 也就是当前行 e.rowindex 也就是当前行的索引 行号 第几行的“几” GridView1.DataKeys[e.RowIndex]是一个数组吗? GridView1.DataKeys是一个数组 存储的是数据表中的一列的值 这一列 就是设为DataKeys的一列 即[学号]这一列 GridView1.DataKeys[e.RowIndex]则是学号这一列这个数组中的一个值 索引为当前行的行号 也就是说GridView1.DataKeys[e.RowIndex]是当前行所对应的数据行这一行 的 学号这个datakey GridView1.DataKeys[e.RowIndex].Value是什么? 这里就是当前行所对应的数据行这一行 的 学号这个datakey 所存储的值 即当前选择这个学生的学号 GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString() 与 GridView1.DataKeys[e.RowIndex].Value.ToString() 的区别 是不同事件中获取当前选中行行号的不同方法 在grid的行相关事件中 可以直接用e来得到当前行 但是在非grid行事件中 作为e的事件触发对象就不是行 所以要用GridView1.SelectedIndex 来获取当前选中行的行号
mengxj85 2010-02-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mengxj85 的回复:]
引用 3 楼 yinhunfeixue 的回复:
引用 1 楼 wuyq11 的回复:
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);


行号是对的,j是什么?

j=>DataKeys  datakeyname
[/Quote]
事件定义datakeynames的值,且值为int
mengxj85 2010-02-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yinhunfeixue 的回复:]
引用 1 楼 wuyq11 的回复:
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);



行号是对的,j是什么?
[/Quote]
j=>DataKeys datakeyname
yinhunfeixue 2010-02-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);

[/Quote]

行号是对的,j是什么?
yinhunfeixue 2010-02-08
  • 打赏
  • 举报
回复
引用 11 楼 likevs 的回复:
太简单了

循环一遍控件,好像是以DataRow对象吧

判断是首模板或者底模板或者中间分隔模板,或者最常用的内容模板,然后取对象属性


循环太浪费资源了,还是少用比较好。。。。
谢谢。
yinhunfeixue 2010-02-08
  • 打赏
  • 举报
回复
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);

j不是列号吧?
lihongxian 2010-02-08
  • 打赏
  • 举报
回复
引用 1 楼 wuyq11 的回复:
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);

up
灵雨飘零 2010-02-07
  • 打赏
  • 举报
回复
protected void Test(object sender, EventArgs e) 
{
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);
}
wuyq11 2010-02-07
  • 打赏
  • 举报
回复
Button btn= (Button)sender;
int i= ((GridViewRow)btn.NamingContainer).RowIndex;//获得行号
int j= Convert.ToInt16(GridView1.DataKeys[i].Value);
一、 基本使用方法 4 1.导入Dll文件 4 2.Asp.Net页面控件注册 4 3. Asp.Net页面控件声明 5 4.删除licenses.licx协议文件(盗版) 5 5.功能概述 5 二、 绑定数据(单层) 5 1.使用DataSource属性绑定DataTable 5 2.使用DataSourceID属性绑定SqlDataSource 6 3.使用DataSourceID属性绑定ObjectDataSource 6 4.使用DataSourceID属性绑定LinqDataSource 9 5.使用DataSourceID属性绑定XmlDataSource 10 三、 绑定数据(嵌套树) 10 1.主从数据绑定 10 四、 客户端行维护(新增、修改、删除等) 12 1.编辑状态 12 2.新增 13 3.修改 13 4.删除 13 五、 服务器端行维护(新增、修改、删除等) 13 1.编辑状态 13 2.新增 13 3.修改 15 4.删除 16 六、 数据保存 17 七、 客户端行选择 17 1.选择页面上所有行 17 2.选中指定行或所有行 18 3.获取选中行 18 4.取消页面上所有行的选择 19 5.取消指定行或所有行的选择 19 八、 服务器端行选择 19 1.可选择性设置 19 2.Selection属性 19 九、 客户端行定位 20 1.将焦点转移到编辑行的指定 20 2.获取焦点 20 3.将某行置为可见(未验证) 20 4.跳转到指定页 20 十、 服务器端行定位 21 1.焦点行 21 2.将某行置为可见 21 3.跳转到指定页 21 十一、 客户端数据搜索 21 1.数据过滤 21 十二、 服务端数据搜索 22 1.数据过滤 22 2.数据搜索 22 十三、 分页 23 1.分页条相关属性 23 2.更改分页条按钮属性 26 3.与分页相关操作 26 十四、 客户端排序 26 1.使用SortBy方法排序 26 十五、 服务器端排序 27 1.排序设置 27 2.使用SortBy方法排序 27 3.直接操作GridViewDataColumn排序 28 4.使用GetSortedColumns方法取排序栏位 28 十六、 服务器端数据分组 28 1.数据分组的前提条件 28 2.使用GroupBy方法实现数据分组 28 3.分组的展开与折叠 29 4.判断分组行是否展开 29 5.数据分组的相关设置 29 6.按分组值排序 30 十七、 客户端数据分组 30 1.使用GroupBy方法实现数据分组 30 2.分组的展开与折叠 30 3.判断分组行是否展开 31 4.判断是分组行还是数据行 31 5.用户拖动栏位到分组带实现分组 31 十八、 数据导出 31 1.内置数据导出的前提条件 31 2.支持的数据导出类型 32 3. ASPxGridViewExporter重要属性 32 4.主从ASPxGridView数据导出 32 5.导出到Pdf时中文乱码问题的解决 33 十九、 报表打印 33 二十、 懒加载 33 二十一、 客户端栏位取值与赋值 33 1.使用GetPageRowValues取当前页指定栏位值 33 2.使用GetRowValues取指定行指定栏位值 34 3.使用GetSelectedFieldValues取选中行指定栏位值 34 4.取栏位实例 34 5.使用GetColumnsCount取栏位总数 34 6.使用MoveColumn隐藏和移动栏位 34 7. 使用GetRowKey取行主键值 35 二十二、 服务器端栏位取值与赋值 35 1.取行值 35 2.取值 36 二十三、 栏位编辑风格 38 1.AspxGridView栏位类型 38 2.GridViewColumn服务器端重要属性 38 3.GridViewColumn服务器端方法 40 4.GridViewCommandColumn:命令按钮 41 5. GridViewDataColumn:基本数据 42 6.GridViewDataButtonEditColumn:编辑按钮 45 7.GridViewDataCheckColumn: 复选框 45 8.GridViewDataTextColumn:文本 45 二十四、 栏位格式化 45 二十五、 固定 45 二十六、 栏位拖动 45 二十七、 栏位合计 46 二十八、 栏位初始值 46 二十九、 栏位可编辑性 46 三十、 栏位数据校验 46 1.行数据校验(编辑状态) 46 三十一、 客户端事件 49 三十二、 服务器端事件 49 1.服务器事件索引 49 2.AutoFilterCellEditorCreate 49 3.AutoFilterCellEditorInitialize 50 4.BeforeGetCallbackResult 50 5.BeforePerformDataSelect 51 6.CancelRowEditing 51 7. CellEditorInitialize 51 7. ClientLayout 52 8. CustomButtonCallback 52 9. CustomCallback 53 10. CustomColumnDisplayText 54 11. CustomColumnGroup 54 12. CustomColumnSort 55 13. CustomDataCallback 56 14. CustomErrorText 57 15. CustomGroupDisplayText 57 16. CustomJSProperties 58 17. CustomSummaryCalculate 58 三十三、 快捷键 59 三十四、 样式 59 1.GridViewStyles重要属性 59 2. GridViewAlternatingRowStyle重要属性 59 三十五、 AspxGridView服务器端重要属性 60 三十六、 AspxGridView服务器端重要方法 60 三十七、 GridViewColumnCollection服务器端重要属性 61 三十八、 AspxGridView客户端重要属性 61 三十九、 AspxGridView客户端常用方法 64 1.PerformCallback 77 四十、 AspxGridView客户端非常用方法 78 四十一、 ASPxClientGridViewColumn(客户端栏位)常用属性 79 四十二、 嵌套AspxGridView的特殊控制 80 1.控制在同一时间只允许一行展开 80 2.SettingsDetail属性设置 80 3.嵌套AspxGridView树展开与折叠(客户端) 80 四十三、 AspxGridView客户端源代码可借鉴点 81 四十四、 AspxGridView服务器端源代码可借鉴点 81

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧